Анализ программы: поиск номера максимума в массиве
В массиве Dat хранятся данные измерений среднесуточной температуры за неделю в градусах. Определите, что будет вычислено в результате работы программы:
Паскаль:
m := 0; n := 0;
for k := 1 to 7 do
if Dat[k] >= m then
begin
m := Dat[k];
n := k
end;
writeln(n)
Python:
m = n = -1
for k in range (7):
if Dat[k] >= m:
m = Dat[k]
n = k
print(n)
Варианты ответа:
- Самая высокая температура за неделю
- Номер дня недели с самой высокой температурой
- Самая низкая температура за неделю
- Номер дня недели с самой низкой температурой
Решение
Переменная m хранит текущий максимум, а n — номер элемента, на котором он найден.
- Перед циклом m получает начальное значение (в Паскале
, в Python − ), n тоже обнуляется. - В цикле k перебирает все дни недели от первого до седьмого.
- Условие Dat[k] >= m выполняется, если температура в k-й день не меньше текущего максимума. Тогда m := Dat[k] (запоминаем новое наибольшее значение) и n := k (запоминаем номер дня).
- После цикла m — наибольшая температура, а n — номер дня, когда она была (при равных значениях — последнего такого дня).
- На экран выводится n, а не m, то есть именно номер дня.
Значит, программа выводит номер дня недели с самой высокой температурой.
💡 Почему так
Сравнение «>=» оставляет в m наибольшее значение, а присваивание n := k запоминает его номер. Выводится n, поэтому результат — номер дня, а не сама температура.
Ответ
✓ dzmen.ru
Номер дня недели с самой высокой температурой
Помогло?
