uses crt;
const n=6;{размер матрицы}
type Tmas=array [1..n] of integer;{тип линейный массив}
Tmatr=array [1..n] of Tmas; {тип массив линейных массивовЮ или матрица}
procedure Vvod(s:char;var m:Tmatr);{ввод матрицы, s - индекс матрицы}
var i,j:byte;
begin
writeln('Ishodnaya matrica ',s,':');{вместо s вставим А или В}
for i:=1 to n do
begin
for j:=1 to n do
begin
m[i,j]:=random(20)-9;
write(m[i,j]:4);
end;
writeln;
end;
end;
procedure Vyvod(x1,y1,x2,y2,c1,c2:byte;s:char;var m:Tmatr);
{вывод в окно, х,у-координаты окна, с-цвет фона и шрифта, s-тоже что и при вводе}
var i,j:byte;
begin
window(x1,y1,x2,y2);{окно}
TextBackGround(c1);{фон}
TextColor(c2); {шрифт}
writeln(' Rezultat po matrice ',s,':');
for i:=1 to n do
begin
for j:=1 to n do
write(m[i,j]:4);
writeln;
end;
end;
procedure Sort(x:byte;var ms:Tmas );{сортировка одномерного массива пузырьком по возрастанию}
var j,k:byte;
f:integer;
begin
for j:=1 to n-1 do
for k:=j+1 to n do
if ms[j]>ms[k] then
begin
f:=ms[j];
ms[j]:=ms[k];
ms[k]:=f;
end;
end;
procedure Min(x:byte;var ms:Tmas);{процедура поиска мин в строке и обмена его с эл. гл. диаг.}
var j,jmin:byte;
min,f:integer;
begin
min:=ms[1];jmin:=1;
for j:=1 to n do
if ms[j]<min then
begin
min:=ms[j];{находим мин.}
jmin:=j; {запоминаем его номер}
end;
f:=ms[jmin]; {мкняем местами через буфер}
ms[jmin]:=ms[x];
ms[x]:=f;
end;
var a,b:Tmatr;{раздел переменных программы}
i,j:byte;
begin {начало программы}
TextMode(2);{устанавливаем активное окно}
randomize;
TextBackGround(7);{фон}
TextColor(0);{цвет шрифта}
Vvod('A',a);{ввод матрицы А}
writeln;
Vvod('B',b);{В}
for i:=1 to n do
if a[i,i]>0 then Sort(i,a[i]){если эл-т гл. диаг. отрицательный, сортируем}
else Min(i,a[i]); {если нет - ищем и переставляем минимум}
Vyvod(40,1,64,8,14,4,'A',a);{вывод результата в новое окно}
for i:=1 to n do
if b[i,i]>0 then Sort(i,b[i]){тоже с матрицей В}
else Min(i,b[i]);
Vyvod(40,9,64,16,3,10,'B',b);
readln
end.