с решением) В программе исполняется одномерный целочисленный массив А с индексами от 0 до 9. Значения 6,2,3,1,5,6,7,8,9,3 соответственно, т.е А[0]=6, A[1]=2 и т.д. Определите значение переменной S после выполнения следующего фрагмента этой программы. S:=0;
n:=0;
for i:=1 to 9 do
if (A[i] +A[n]) mod 4< >0 then
begin
S:=S+i;
t:=A[i];
A[i]:= A[n];
A[n]:=t;
end;
ответ: 28
Объяснение:
Заданный фрагмента программы выполняет следующую задачу:
Цикл для i от 1 до 9, в котором если остаток от деления (А[i] + A[0]) на 4 неравен 0, (т. е. сумма А[i] и A[0] не делится на 4), то их (А[i] и A[0]) меняют местами, а переменную S увеличивают на i. Выполним алгоритм вручную:
6, 2, 3, 1, 5, 6, 7, 8, 9, 3; i=1; (6+2)%4 = 8%4 = 0; 6, 2, 3, 1, 5, 6, 7, 8, 9, 3; i=2; (6+3)%4 = 9%4 = 1; --> S =0+2= 23, 2, 6, 1, 5, 6, 7, 8, 9, 3; i=3; (3+1)%4 = 4%4 = 0; 3, 2, 6, 1, 5, 6, 7, 8, 9, 3; i=4; (3+5)%4 = 8%4 = 0; 3, 2, 6, 1, 5, 6, 7, 8, 9, 3; i=5; (3+6)%4 = 9%4 = 1; --> S =2+5= 76, 2, 6, 1, 5, 3, 7, 8, 9, 3; i=6; (6+7)%4 = 13%4 = 1; --> S =7+6= 137, 2, 6, 1, 5, 3, 6, 8, 9, 3; i=7; (7+8)%4 = 15%4 = 3; --> S =13+7= 208, 2, 6, 1, 5, 3, 6, 7, 9, 3; i=8; (8+9)%4 = 17%4 = 1; --> S =20+8= 289, 2, 6, 1, 5, 3, 6, 7, 8, 3; i=9; (9+3)%4 = 12%4 = 0;Как можно увидеть, после выполнения фрагмента программы переменная S будет равна 28.
Пример работы: