Помогите разобраться в задаче
const x:array [1..10] of integer=(-1,23,32,-8,27,-3,5,13,-4,17);
var i,k,s:integer; x1:array[1..10] of integer;
begin
for i:=1 to 10 do
x1[i]:=x[i];
begin
for k:=1 to 5 do
for i:=3 to 7 do if x[i]< x[i+1] then begin
S:=x1[i+1];
x1[i+1]:=x[i];
x1[i]:=s
end;
s:=x[6];
for i:=4 to 8 do s:=s+x[i] ;
writeln (s);
end;
end.

Ответ: 31. А именно, я не понимаю как именно идёт последовательность, знаю, что вложенный цикл повторяется пока не завершится, затем внешний пока не завершится. Но если оператор IF не выполняется, что следует? У меня именно в этом месте затуп. Буду признателен, если изложите по пунктам ход решения. спасибо!

1

Ответы и объяснения

2014-01-30T00:47:28+04:00
Const
x:array [1..10] of integer=(-1,23,32,-8,27,-3,5,13,-4,17);
var i,k,s:integer;
x1:array[1..10] of integer;
begin
for i:=1 to 10 do
x1[i]:=x[i];
for k:=1 to 5 do
for i:=3 to 7 do
if x[i]<x[i+1] then begin
S:=x1[i+1];
x1[i+1]:=x[i];
x1[i]:=s;
end;
s:=x[6];
for i:=4 to 8 do
s:=s+x[i] ;
writeln (s);
end.
2)
for i:=1 to 10 do
write(x1[i]:2,' ');
writeln;
for i:=1 to 10 do
write(x[i]:2,' ');
writeln;
если добавиш это перед end. узнаеш какой станет массив
если добавиш после i
f x[i]< x[i+1] then
begin 

S:=x1[i+1]; 
x1[i+1]:=x[i]; 
x1[i]:=s
то узнаеш как изменится массив каждый раз
А ещё про твой вопрос
если if не выполняется внутренный цыкл переходит на следующее значение тоесть i увеличится на 1 пока небудет равным 7 после чего k увел. на 1 а ай станофится равным 3 и цыкл повторяется
после всего цикла и s будет принемать значение 6 числа из массива x после чего еще сумируется с числами из этогоже массива под номерами от 4 до 8 в результате коротой S=31
понятно?
Ага, теперь если я правильно понял весь алгоритм, сначала идёт цикл внутренний(если иф не выполняется перескакивает цифра), причем цикл повторяется пока не выполнится, т.е. до end;
Затем, с принимает значение 6 элемента нового массива, и выполняется ещё один цикл
да