Var k, m, num: integer; Dat: array [1..10] of integer; begin Dat[1]:=7;Dat[2]:=-8;...

0 голосов
131 просмотров

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.

В результате выполнения программы будет напечатано 9 , не смог разобраться почему.


Информатика (15 баллов) | 131 просмотров
0

если можно поподробнее

0

так короче

0

var i, k: 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; k := 1; for i := 2 to 10 do if Dat[k] * Dat[i] < 0 then k:=i; writeln(k);end.

Дан 1 ответ
0 голосов
Правильный ответ

В программе последовательно определяются номера элементов (num), имеющих знак, противоположный знаку предыдущих (предыдущего) элемента (Dat[k]*m < 0). Переменная num в цикле последовательно будет принимать значения 2, 3, 5, 6, 8, 9. После цикла будет выведено последнее значение num. (У элемента Dat[10] знак совпадает со знаком элемента Dat[9].)

(194k баллов)