#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;
}
}