Program E04;
uses crt;
var
n,i,k,f: integer;
X: array[1..50] of real;
Max,S: real;
begin
clrscr;
writeln('Введите размерность: ');
readln(n);
writeln('Введите массив: ');
for i:=1 to n do
begin
write('X[',i:2,'] ==> ');
readln(X[i])
end;
writeln('Исходный массив: ');
for i:=1 to n do
write(X[i],' ');
writeln;
Max:=abs(X[1]);
for i:=1 to n do
if Max <= abs(X[i]) then
Max:=abs(X[i]);
writeln('Максимальный элемент по модулю: ',Max);
i:=1;
while (i <= n) and (X[i] <= 0) do
i:=i+1;
if i > n then
writeln ('folse')
else
begin
k:=i;
i:=i+1;
while (i <= n) and (X[i] <= 0) do
i:=i+1;
if i > n then
writeln ('folse')
else
begin
f:=i;
for i := k + 1 to f - 1 do
S:=S+X[i];
writeln('Сумма: ',S:5:2);
end;
end;
end.
Сначала (до i=5) удваиваются элементы массива 1, 2, 3, 4, 5. Получается соответственно 2, 4, 6, 8, 10. Затем, с i=6 удваиваются полученные значения (в обратном порядке). Получается 20, 16, 12, 8, 4.
Можно это всё расписать подробно, по шагам:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
1 шаг цикла:
A [10] := 2*A[1]
1, 2, 3, 4, 5, 6, 7, 8, 9, 2
2 шаг:
A [9] := 2*A[2]
1, 2, 3, 4, 5, 6, 7, 8, 4, 2
3 шаг:
A [8] := 2*A[3]
1, 2, 3, 4, 5, 6, 7, 6, 4, 2
4 шаг:
A [7] := 2*A[4]
1, 2, 3, 4, 5, 6, 8, 6, 4, 2
5 шаг:
A [6] := 2*A[5]
1, 2, 3, 4, 5, 10, 8, 6, 4, 2
6 шаг:
A [5] := 2*A[6]
1, 2, 3, 4, 20, 10, 8, 6, 4, 2
7 шаг:
A [4] := 2*A[7]
1, 2, 3, 16, 20, 10, 8, 6, 4, 2
8 шаг:
A [3] := 2*A[8]
1, 2, 12, 16, 20, 10, 8, 6, 4, 2
9 шаг:
A [2] := 2*A[9]
1, 8, 12, 16, 20, 10, 8, 6, 4, 2
10 шаг:
A [1] := 2*A[10]
4, 8, 12, 16, 20, 10, 8, 6, 4, 2
Ответ: 8