Оператор цикла for: поиск минимального числа, среди вводимых с клавиатуры


Максимальное число среди заданных чисел

При изучении условного оператора мы затрагивали тему поиска максимального числа из нескольких введенных чисел. В задаче "Максимум из четырех чисел" мы использовали следующий алгоритм:
1. присвойте значение переменной M первой из четырех переменных;
2. если значение второй переменной больше, чем значение, находящееся в переменной M, то замените значение переменной на значение второй переменной;
3. если значение третьей переменной больше, чем значение, находящееся в переменной M, то замените значение переменной M на значение третьей переменной;
4. если значение четвертой переменной больше, чем значение, находящееся в переменной M, то замените значение переменной на значение четвертой переменной.

Видно, что каждое  число (обозначим его за X) мы сравнивали с переменной M, следующим образом:
 
псевдокод
ввод Х
если (M < X), то
  M = X

Главное в этом коде определить, какое начальное значение будет у переменной M.
Обычно, при решении задачи на поиск максимума или минимума, начальное значение переменной M присваивают равной первому числу.
Таким образом, вышеуказанный код необходимо выполнить на 1 раз меньше, чем количество чисел (т.к. первое число необходимо ввести и сохранить в качестве начального значения переменной M).
Если у нас количество чисел задается с клавиатуры (например, в переменную n), то мы можем организовать цикл (от 2 до n), используя для хранения числа одну и ту же переменную.

Попробуйте написать программу самостоятельно.

Максимальное не среди всех

Если нам необходимо найти максимальное (минимальное) не среди всех вводимых чисел, а только среди чисел, удовлетворяющих определенному условию, то необходимо учитывать тот факт, что первое число, которое мы берем за начальное значение максимума (минимума) не всегда будет удовлетворять нашим требованиям.

Например, если мы ищем максимальное отрицательное число, то имея набор данных: \(\{5, -2, 4, 2, -1, -3\}\) мы получим в начальном значении максимума число 5, а оно положительное и больше любого отрицательного. И, следовательно, условие X > M всегда будет ложно.

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

Исправить это можно с помощью добавления внутри цикла следующего условия:
 
псевдокод
если X - отрицательное, то
  если M >= 0 или M < X, то
    M = X

В указанном коде условие M >= 0 позволяет выполнить действие M = Х даже в том случае, если первоначально в переменную попало значение, которое заведомо больше остальных (в рассмотренном нами примере - значение равное 5).

Еще заметим, что если диапазон изменения чисел известен, то в качестве начального значения максимума (минимума) можно брать минимальное (максимальное) число из указанного диапазона.