Задание № 12566

В таблице Dat хранятся положительные или отрицательные целые числа. Определите, что будет напечатано в результате выполнения следующего алгоритма, написанного на трех алгоритмических языках.

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

алг
нач
целтаб Dat[1:10]
цел к, т, пит
Dat[1]:= 7; Dat[2]:= -8
Dat[3]:= 3; Dat[4]:= б
Dat[5]:= -4; Dat[6]:= 3
Dat[ 7 ] : = 5; Dat[8]:= -5
Dat [9] := 7; Dat [10] := 1
num := 1; m := Dat[1]
нц для k от 2 до 10
если Dat[k] * m < 0 то
m := Dat[k]; num := k
все
кц
вывод num
кон

Бейсик

DIM Dat (10)AS INTEGER
Dat (1) - 7: Dat (2) = -8
Dat (3) =3: Dat (4) = 6
Dat (5) = -4 Dat (6) =3
Dat (7) = 5: Dat (8) = -5
Dat (9) = 7: Dat(10) = I
num = 1: m = Dat (1)
FOR k = 2 TO 10
IF Dat(k) * m < 0 THEN
m = Dat(k)
num = k
END IF
NEXT k
PRINT num
END

Паскаль

var k, m, num: integer;
Dat: array[1..10] of integer;
begin
Dat[1]:= 7; Dat[2]:= -8;
Dat[3]:= 3; Dat[4]:= 6;
Dat[5]:= -4; Dat[6]:= 3;
Dat[7]:= 5; Dat[8]:= -5;
Dat [9] := 7; Dat[10] := 1;
num:= 1; m:= Dat[1];
for k:= 2 to 10 do begin
if Dat[k] * m < 0 then
begin
m := Dat [k]; num := k
end
end;
write(num);
end.


Показать ответ
Комментарий:

Рассмотрим на языке Паскаль

Условие Dat[k] * m < 0 выполняется если m (Dat[1] изначально) * на Dat[2] (т.к. k с двух начинается) меньше нуля

Это означает что Dat[k] и m должны иметь разные знаки

k:=2 |m=7, Dat[2]=-8, т.е. условие выполняется и m:= Dat[2], а num:=k (т.е. становится 2)

k:=3 |m=-8, Dat[3]=3 => m:=Dat[3], num:=3

k:=4 |m=3, Dat[4]=6 => условие не выполняется

k:=5 |m=3, Dat[5]=-4 => m:=Dat[5], num:=5

k:=6 |m=-4, Dat[6]=3 => m:=Dat[6], num:=6

k:=7 |m=3, Dat[7]=5 => Условие не выполняется

k:=8 |m=3, Dat[8]=-5 => m:=Dat[8], num:=8

k:=9 |m=-5, Dat[9]=7 => m:=Dat[9], num:=9

k:=10 |m=7, Dat[10]=1 => Условие не выполняется

После выполнения цикла печатается переменная num, которая будет равна 9

Ответ: 9

Ответ: 9

Нашли ошибку в задании? Выделите фрагмент и нажмите Ctrl + Enter.