uses crt;
Const m=3;n=4;
Type Matrica=array[1..m,1..n] of integer;
var Mas:Matrica;
Procedure Vvod(var Massiv:Matrica);
var i,j:integer;
begin
for i:=1 to m do
for j:=1 to n do
begin
write('Введите ',i,j,' элемент: ');
readln(Massiv[i,j]);
end;
writeln('Начальная матрица: ');
for i:=1 to m do
begin
write('|');
for j:=1 to n do
write(Massiv[i,j],' ');
writeln('|');
end;
end;
Procedure Sortirovka(var Massiv:Matrica);
var stroka,stolbec,max,i,j:integer;
masStolbec:array[1..m] of integer; {Столбец с мах элементом}
masStroka:array[1..n] of integer; {Строка с мах элементом}
begin
max:=Massiv[1,1];
stroka:=1;
stolbec:=1;
for i:=1 to m do
for j:=1 to n do
if Massiv[i,j]>max then
begin
max:=Massiv[i,j];
stroka:=i; {Столбец в котором находится мах элемент}
stolbec:=j; {Строка в котором находится мах элемент}
end;
{=======================Сортировка по столбцам===============================}
If stolbec<>1 then
begin
for i:=1 to m do
masStolbec[i]:=Massiv[i,stolbec]; {Запоминаем столбец с мах элементом}
for i:=stolbec downto 2 do {Сдвигаем столбцы}
for j:=1 to m do
Massiv[j,i]:=Massiv[j,i-1];
for i:=1 to m do {Первому столбцу присваиваем знач. столбца с мах элементом}
Massiv[i,1]:=masStolbec[i];
end; {if}
{=========================Сортировка по строкам==============================}
if stroka<>1 then
begin
for i:=1 to n do {Запоминаем стороку с мах элементом}
masStroka[i]:=Massiv[stroka,i];
for i:=stroka downto 2 do {Сдвигаем строки}
for j:=1 to n do
Massiv[i,j]:=Massiv[i-1,j];
for i:=1 to n do {Первой стороке присваиваем знач. строки с мах элемен.}
Massiv[1,i]:=masStroka[i];
end; {if}
{================================================= ===========================}
end;
Procedure Vivod(Massiv:Matrica);
var i,j:integer;
begin
writeln('Итоговая матрица: ');
for i:=1 to m do
begin
write('|');
for j:=1 to n do
write(Massiv[i,j],' ');
writeln('|');
end;
end;