Program asd; Const n=3; m=3; Var A:array[1..n, 1..m] of integer; i,j,s,s1,k:integer; sr:real; BEGIN Writeln('Массив А: '); For i:=1 to n do begin s:=0; for j:=1 to m do begin A[i,j]:=Random(10); Write(A[i,j]:2); s:=s+A[i,j]; sr:=s/i; end; Writeln; end; Writeln; k:=0; For i:=1 to n do begin s1:=0; for j:=1 to m do
If A[i,j]>sr then begin inc(k); s1:=s1+A[i,j]; end;
c := 0; // начальное значение счётчика
for i := 1 to 9 do // цикл по i
if A[i - 1] < A[i] then begin // если текущий элемент больше предыдущего
c := c + 1; // то увеличиваем счётчик на 1
t := A[i]; // и меняем текущий элемент местами с предыдущим
A[i] := A[i - 1];
A[i - 1] := t
end;
Последние три строчки перед end - обычный алгоритм обмена значениями между двумя переменными (t = a; a = b; b = t).
Итак, моделируем, что делает программа и считаем число обменов.
0) 6 9 7 2 1 5 0 3 4 8 - исходный массив
1) 6 9 7 2 1 5 0 3 4 8 -> 9 6 7 2 1 5 0 3 4 8 ОБМЕН
2) 9 6 7 2 1 5 0 3 4 8 -> 9 7 6 2 1 5 0 3 4 8 ОБМЕН
3) 9 7 6 2 1 5 0 3 4 8 ОК
4) 9 7 6 2 1 5 0 3 4 8 ОК
5) 9 7 6 2 1 5 0 3 4 8 -> 9 7 6 2 5 1 0 3 4 8 ОБМЕН
6) 9 7 6 2 5 1 0 3 4 8 ОК
7, 8, 9) Ноль будет "всплывать" в конец, 3 ОБМЕНА
Всего будет 6 обменов, c = 6.
Const n=3; m=3;
Var A:array[1..n, 1..m] of integer;
i,j,s,s1,k:integer; sr:real;
BEGIN
Writeln('Массив А: ');
For i:=1 to n do
begin
s:=0;
for j:=1 to m do
begin
A[i,j]:=Random(10);
Write(A[i,j]:2);
s:=s+A[i,j];
sr:=s/i;
end;
Writeln;
end;
Writeln;
k:=0;
For i:=1 to n do
begin
s1:=0;
for j:=1 to m do
If A[i,j]>sr then
begin
inc(k);
s1:=s1+A[i,j];
end;
Writeln('Сумма строки №',i,' : ',s1);
end;
Writeln('Сред. ариф. массива: ',sr:2:2);
Writeln('Количество: ',k);
END.