type
mas=array[1..20,1..20] of double;
var
ar:mas;
val:real;
i,j,n,cnt:integer;
procedure FillArray(razm:integer; var a:mas);
var
i,j:integer;
begin
randomize;
for i:=1 to razm do
for j:=1 to razm do
a[i,j]:=(random(40)/100)+random(5);
end;
procedure PrintArray(razm:integer; var a:mas);
var
i,j:integer;
begin
for i:=1 to razm do
begin
for j:=1 to razm do
write(a[i,j]:3:2,' ');
writeln;
end;
end;
procedure SortArray(razm:integer; var a:mas);
var
isSort:boolean;
i,j:integer;
begin
isSort:=false;cnt:=0;
while not isSort do
begin
i:=1;
while i<=n do
begin
isSort:=true;
j:=1;
while j<n do
begin
inc(cnt);
if a[i,j]<a[i,j+1] then
begin
val:=a[i,j];
a[i,j]:=a[i,j+1];
a[i,j+1]:=val;
isSort:=false;
j:=n;
end
else
inc(j);
end;
if isSort then
inc(i);
end;
end;
end;
begin
Writeln('Введите размерность матрицы A[n,n]');
Write('n=');Readln(n);
// заполнение массива;
FillArray(n, ar);
// вывод массива;
Writeln('Исходный массив');
PrintArray(n,ar);
// сортируем;
SortArray(n,ar);
Writeln;
// вывод массива;
Writeln('Итоговый массив');
PrintArray(n,ar);
Writeln('Всего проходов:', cnt);
Readln;
end.