Регистрация
Войти
Стать экспертом Правила
Информатика

В таблице Dat хранятся данные о количестве проданных единиц товаров 10 типов (Dat[1] — проданных товаров первого типа, Dat[2] — второго типа и т.д.). Определите, что будет напечатано в результате выполнения следующего алгоритма, записанного на трёх языках программирования.

Алгоритмический язык

алг
нач
целтаб Dat[1:10]
цел k, m, day
Dat [1] : = 7; Dat [2] : = 2
Dat [3] : = 3; Dat [4] : = 3
Dat [5] : = 4; Dat [6] : = 4
Dat [7] : = 5; Dat [8] : = 5
Dat [9] : = 7; Dat [10]: = 6
day : = 1; m : = Dat [1]
нц для k от 2 до 10
если Dat[к] > = m то
m : = Dat[к]; day : = к
все
кц
вывод day
кон
Бейсик

DIM Dat(10) AS INTEGER
Dat (1) = 7: Dat (2) = 2
Dat (3) = 3: Dat (4) = 3
Dat (5) = 4: Dat (6) = 4
Dat (7) = 5: Dat (8) = 5
Dat (9) = 7: Dat (10) = 6
day = 1: m = Dat(1)
FOR k = 2 TO 10
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..10] of integer;
begin
Dat[1] : = 7; Dat[2] : = 2;
Dat[3] : = 3; Dat[4] : = 3;
Dat[5] : = 4; Dat[6] : = 4;
Dat[7] : = 5; Dat[8] : = 5;
Dat[9] : = 7; Dat[10] : = 6;
day: = 1;
m: = Dat[1];
for k: = 2 to 10 do begin
if Dat[k] > = m then
begin
m : = Dat [k];
day : = k
end
end;
write(day);
end.
Как это решать?

ОТВЕТЫ
Смотрим на этот фрагмент кода:
day := 1; m := Dat [1]
нц для k от 2 до 10
  если Dat[k] gt;= m то
    m := Dat[k]; day := k
  все
кц

Что происходит Сначала day = 1, m = Dat[day]. Затем в цикле для каждого k сравнивается Dat[k] с m, и если Dat[k] не меньше его, то в day записывается k, а в m - Dat[k]. Значит, после завершения цикла в переменной m будет записано максимальное из всех значений Dat[i], а в day - номер дня, в который в последний раз был достигнут максимум.

Максимальное значение равно 7, в последний раз появилось в Dat[9], поэтому day = 9.

Команда вывод day выводит на экран значение переменной day, которое, как мы уже выяснили, равно 9.

Ответ. 9.
230
Контакты
Реклама на сайте
Спрошу
О проекте
Новым пользователям
Новым экспертам