Во-первых, не whill, а while. Во-вторых, цикл с предусловием(while) выполняется только тогда, когда его условие возвращает ложь. Если условие возвращает правду, цикл завершается. Бывает так, что при попытке первой итерации цикла условие уже возвращает правду. В этом случае цикл не будет выполнен ни разу. Цикл с предусловием(repeat), наоборот, выполняется, пока условие возвращает правду и завершается ложью. Стоит заметить, что если цикл с предусловием проверяет своё условие перед итерацией, цикл с постусловием делает это после, а это значит, что последний выполнится хотя бы один раз.
Консольное приложение: const n=9; var l:array[1..n] of integer; i,max,imax,min,imin,s:integer; begin Randomize; writeln('Массив L:'); for i:=1 to n do begin l[i]:=random(51); write(l[i]:4); end; writeln; max:=l[1]; imax:=1; min:=l[1]; imin:=1; for i:=2 to n do begin if l[i]>max then begin max:=l[i]; imax:=i; end; if l[i]<min then begin min:=l[i]; imin:=i; end; end; writeln('max = l[',imax,'] = ',max); writeln('min = l[',imin,'] = ',min); s:=0; if imax>imin then for i:=imin+1 to imax-1 do s:=s+l[i] else for i:=imax+1 to imin-1 do s:=s+l[i]; writeln('s = ',s); end.
Пример: Массив L: 31 49 41 15 9 47 37 11 27 max = l[2] = 49 min = l[5] = 9 s = 56
Во-вторых, цикл с предусловием(while) выполняется только тогда, когда его условие возвращает ложь. Если условие возвращает правду, цикл завершается. Бывает так, что при попытке первой итерации цикла условие уже возвращает правду. В этом случае цикл не будет выполнен ни разу.
Цикл с предусловием(repeat), наоборот, выполняется, пока условие возвращает правду и завершается ложью. Стоит заметить, что если цикл с предусловием проверяет своё условие перед итерацией, цикл с постусловием делает это после, а это значит, что последний выполнится хотя бы один раз.
const n=9;
var l:array[1..n] of integer;
i,max,imax,min,imin,s:integer;
begin
Randomize;
writeln('Массив L:');
for i:=1 to n do
begin
l[i]:=random(51);
write(l[i]:4);
end;
writeln;
max:=l[1]; imax:=1;
min:=l[1]; imin:=1;
for i:=2 to n do
begin
if l[i]>max then begin max:=l[i]; imax:=i; end;
if l[i]<min then begin min:=l[i]; imin:=i; end;
end;
writeln('max = l[',imax,'] = ',max);
writeln('min = l[',imin,'] = ',min);
s:=0;
if imax>imin
then for i:=imin+1 to imax-1 do s:=s+l[i]
else for i:=imax+1 to imin-1 do s:=s+l[i];
writeln('s = ',s);
end.
Пример:
Массив L:
31 49 41 15 9 47 37 11 27
max = l[2] = 49
min = l[5] = 9
s = 56