Поиск самой маленькой переменной в программе?

#c

#c

Вопрос:

Мне трудно понять, как отслеживать значение int в функции. Программа считывает вводимые пользователем данные, например «10, 9, 8, 7, 1, 20». Он должен назначить 10 как «наименьшее» число. Первое число, которое вводит пользователь, всегда является наименьшим временным значением. и затем, если пользователь вводит другое число, скажем, 9, он сравнивает 9 < 10 и обновляет наименьшее число. Проблема, с которой я сталкиваюсь, заключается в том, что мое наименьшее число внутри функции — это просто следующее число, которое вводит пользователь, поэтому, если пользователь вводит 20, наименьшее число будет равно 20.

Другими словами, программа, которая сохраняет первый пользовательский ввод и продолжает считывать пользовательский ввод и обновляется только тогда, когда он меньше первого пользовательского ввода. Невозможно использовать массивы для сохранения пользовательского ввода.

 int smallest;
int someFunction(int r){
smallest = r;


int tempvalue = r;
    
if (tempvalue < smallest){
   smallest = r;
  }
}
 

Комментарии:

1. Это не сработает, потому что каждый раз, когда вы передаете значение функции, она обрабатывает его как новое значение, и обе переменные сохраняют новое значение как наименьшее, так и временное. Попробуйте передать значения в виде массива чисел или попробуйте запустить цикл внутри main(), не передавая его какой-либо функции.

2. Самая маленькая переменная не сохраняется внутри функции. Но инструкции состоят в том, чтобы сделать первый ввод наименьшей переменной. А затем сравните для каждого другого входящего ввода.

3. Вы int someFunction(int r) должны возвращать значение, отличное от того, что ваша проблема smallest инициализируется значением 0 в начале программы (до int main() ), потому что это глобальная переменная. Возможно, вы захотите инициализировать ее std::numeric_limits<int>::max(); соответствующим: https://en.cppreference.com/w/cpp/types/numeric_limits

Ответ №1:

Вот один из способов сделать это:

 #include <stdint.h> // INT_MAX

// As its name implies INT_MAX is the largest value for an int.

int main()
{
   int user_input;
   int min_value = INT_MAX;  // store your min value in a durable and
                             // accessible scope... It could  also be 
                             // a global variable, which would make it
                             // accessible from another function.

   while (/* .... */ )       // plug in your favorite logic for an input loop                  
   {
       // add code to read user input, store in variable user_input

       // on the first run, whatever the user inputs has to be
       // less or equal to MAX_INT.   

       if (user_input < min_value)   // check against stored value.
          min_value = user_input; 
   } 
}