
В таблице Dat хранятся данные ежедневных измерений количества осадков за неделю в миллиметрах (Dat[1] − данные за понедельник, Dat[2] − за вторник и т. д.). Определите, что будет напечатано в результате выполнения следующего алгоритма, записанного на трех языках программирования.
| Алгоритмический язык | |
| алг нач целтаб Dat[1:7] цел k, m, day Dat[1] := 14; Dat[2] := 10 Dat[3] := 0; Dat[4] := 15 Dat[5] := 0; Dat[6] := 15 Dat[7] := 10 day := 1; m := Dat[1] нц для k от 2 до 7 если Dat[k] > m то m := Dat[k] day := k все кц вывод day кон | |
| Бейсик | Паскаль |
| DIM Dat(7) AS INTEGER Dat(1) = 14: Dat(2) = 10 Dat(3) = 0: Dat(4) = 15 Dat(5) = 0: Dat(6) = 15 Dat(7) = 10 day = 1: m = Dat(1) FOR k = 2 TO 7 IF Dat(k) > m THEN m = Dat(k) day = k END IF NEXT k PRINT day END | var k, m, day: integer; Dat: array[1..7] of integer; begin Dat[1] := 14; Dat[2] := 10; Dat[3] := 0; Dat[4] := 15; Dat[5] := 0; Dat[6] := 15; Dat[7] := 10; day := 1; m := Dat[1]; for k := 2 to 7 do if Dat[k] > m then begin m := Dat[k]; day := k end; write(day); end. |
Решение.
Это задание ещё не решено, приводим решение прототипа.
В таблице Dat хранятся данные измерений роста учеников 4 класса в сантиметрах. (Dat[1] — рост первого ученика, Dat[2] — второго и т. д.). Определите, что будет напечатано в результате выполнения следующего алгоритма, записанного на пяти языках программирования.
| Бейсик | Python |
|---|---|
DIM Dat(10) AS INTEGER DIM k, n, d AS INTEGER Dat(1) = 140: Dat(2) = 130 Dat(3) = 135: Dat(4) = 150 Dat(5) = 120: Dat(6) = 150 Dat(7) = 110: Dat(8) = 140 Dat(9) = 150: Dat(10) = 135 d = Dat(1); n = 1 FOR k = 2 TO 10 IF Dat(k) >= d THEN d = Dat(k) n = k ENDIF NEXT k PRINT n | Dat = [140, 130, 135, 150, 120, 150, 110, 140, 150, 135] d = Dat[0] n = 1 for k in range(1,10): if Dat[k] >= d: d = Dat[k] n = k + 1 print (n)
|
| Паскаль | Алгоритмический язык |
Var k, n, d: integer; Dat: array[1..10] of integer; Begin Dat[1]:=140; Dat[2]:=130; Dat[3]:=135; Dat[4]:=150; Dat[5]:=120; Dat[6]:=150; Dat[7]:=110; Dat[8]:=140; Dat[9]:=150; Dat[10]:=135; d := Dat[1]; n := 1; for k := 2 to 10 do if Dat[k] >= d then begin d := Dat[k]; n := k; end; writeln(n); End.
| алг нач целтаб Dat[1:10] цел k, n, d Dat[1] := 140 Dat[2] := 130 Dat[3] := 135 Dat[4] := 150 Dat[5] := 120 Dat[6] := 150 Dat[7] := 110 Dat[8] := 140 Dat[9] := 150 Dat[10] := 135 d := Dat[1] n := 1 нц для k от 2 до 10 если Dat[k] >= d то d := Dat[k] n := k все кц вывод n кон |
| С++ | |
#include <iostream> using namespace std; int main() { int Dat[10] = {140, 130, 135, 150, 120, 150, 110, 140, 150, 135}; int d = Dat[0]; int n = 1; for (int k = 1; k < 10; k++) if (Dat[k] >= d) { d = Dat[k]; n = k + 1; } cout << n; return 0; } | |
Программа предназначена для нахождения номера ученика с наибольшим ростом. Если несколько учеников имеют одинаковый рост, то берется последний по порядку из таких учеников. Проанализировав входные данные, приходим к выводу, что ответ 9.
Ответ: 9.

