Паскаль --- uses crt; var a: array[1..100,1..100] of integer; x,y,sum,k,n:integer; begin write('Введите n: '); readln(n); clrscr; for x:=1 to n do begin for y:=1 to n do begin a[x,y]:=random(21)-10; write(a[x,y]:4); end; writeln; end; k:=0; Sum:=0; for x:=1 to n do for y:=x+1 to n do if a[x,y]>0 then begin Sum:=Sum+a[x,y]; inc(k); end; writeln; if k<>0 then write(sum/k:4:2); end.
Во-первых, не whill, а while. Во-вторых, цикл с предусловием(while) выполняется только тогда, когда его условие возвращает ложь. Если условие возвращает правду, цикл завершается. Бывает так, что при попытке первой итерации цикла условие уже возвращает правду. В этом случае цикл не будет выполнен ни разу. Цикл с предусловием(repeat), наоборот, выполняется, пока условие возвращает правду и завершается ложью. Стоит заметить, что если цикл с предусловием проверяет своё условие перед итерацией, цикл с постусловием делает это после, а это значит, что последний выполнится хотя бы один раз.
-2
-4
-2
-4
Не знаю почему так получилось
Но решение есть