В массиве Dat хранятся данные измерений среднесуточной температуры за неделю в градусах. Определите, что будет вычислено в результате работы программы, фрагмент которой приведён на двух языках программирования.
| Паскаль | Python |
|---|---|
m := 0; n := 0;for k := 1 to 7 do if Dat[k] >= m then begin m := Dat[k]; n := k end;writeln(n) |
m = n = -1for k in range(7): if Dat[k] > m: m = Dat[k] n = kprint(n) |
а) Самая высокая температура за неделю
б) Самая низкая температура за неделю
в) Номер дня недели с самой высокой температурой
г) Номер дня недели с самой низкой температурой
Переменная m хранит найденное на данный момент наибольшее значение температуры. В цикле значение Dat[k] сравнивают с m. Если условие истинно, новое значение записывают в m, а индекс этого элемента — в n. После цикла выводится именно n, а не m. Значит, программа выводит номер элемента с самой высокой температурой, вариант в).
Трассировка на примере допустимых данных показывает смысл переменных:
День, k |
Dat[k] |
Максимум после шага, m |
Индекс максимума, n |
|---|---|---|---|
У языковых вариантов есть уточнение. В Паскале индексы дней — >= запоминается последний такой день. В Python индексы — > запоминается первый. При отрицательных температурах выбранные начальные значения m могут помешать найти настоящий максимум; для надёжной программы следует начать с первого элемента массива. Но назначение данного фрагмента определяется записанным сравнением и выводом индекса.
в) номер дня недели с самой высокой температурой.
