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