Указания:
- Изначальный массив задать самостоятельно.
- На экран вывести начальный и полученный массивы.
uses crt;
var
a: array [1 .. 50, 1 .. 50] of integer; { матрица }
m, n, i, j, k, tmp: integer;
{ размеры матрицы,счетчики циклов, буфер для обмена }
begin
clrscr;
randomize;
writeln('Введите размеры матрицы:');
write(' Количество строк m=');
repeat
readln(m);
until m in [1 .. 50];
write(' Количество столбцов n=');
repeat
readln(n);
until n in [1 .. 50];
writeln;
writeln('Исходная матрица:');
for i := 1 to m do
begin
for j := 1 to n do
begin
a[i, j] := random(100);
{ заполним матрицу случайными числами в инт[0,99] }
write(a[i, j]:4);
end;
writeln;
end;
writeln;
{ сортировка матрицы пузырьком }
for k := 1 to n * m do { повторяем сколько элементов в матрице }
for i := 1 to m do
for j := 1 to n do
begin
if j <> n then { если элемент в строке не последний }
begin
if a[i, j + 1] < a[i, j] then
begin
tmp := a[i, j + 1];
a[i, j + 1] := a[i, j];
a[i, j] := tmp; { обмен элементов }
end;
end
else if (a[i + 1, 1] < a[i, j]) and (i <> m)
then { если строка не последняя }
{ меняем первый элемент в следущей строке с последним элементом в текущей строке }
begin
tmp := a[i + 1, 1];
a[i + 1, 1] := a[i, j];
a[i, j] := tmp;
end;
end;
writeln('Отсортированная матрица:');
for i := 1 to m do
begin
for j := 1 to n do
write(a[i, j]:4);
writeln;
end;
readln
end.