uses crt;
type mas= array [1..20] of integer;//строка матрицы
matr= array[1..20] of mas;//массив строк=матрица
procedure SozdMtr (var d:matr;var x:byte;c:char);
var i,j:byte;
begin
writeln('Matrica ',c);
write('Razmer=');readln(x);
for i:=1 to x do
for j:=1 to x do
d[i,j]:=random(100)-40;
end;
procedure VyvMtr (var d:matr;x:byte);
var i,j:byte;
begin
for i:=1 to x do
begin
for j:=1 to x do
write(d[i,j]:5);
writeln;
end;
end;
procedure SortStr(var v:mas;x:byte);//сортировка строки
var i,j:byte;
c:integer;
begin
for i:=1 to x-1 do
for j:=i+1 to x do
if v[i]>v[j] then
begin
c:=v[i];
v[i]:=v[j];
v[j]:=c;
end;
end;
function Min(v:mas;x:byte):byte;//номер минимального в строке
var i,im:byte;
begin
im:=1;
for i:=1 to x do
if v[i]<v[im] then im:=i;
Min:=im;
end;
procedure Result(var d:matr;x:byte);//обработка матрицы
var i,j:byte;
c:integer;
begin
for i:=1 to x do
if d[i,i]>0 then SortStr(d[i],x)//первое условие, сортировка
else if d[i,i]<=0 then//второе условие, обмен
begin
c:=d[i,i];
d[i,i]:=d[i,Min(d[i],x)];
d[i,Min(d[i],x)]:=c;
end;
end;
var a,b:matr;
n,m,i,j:byte;
c:integer;
BEGIN
clrscr;
randomize;
SozdMtr(a,n,'A');
writeln('Ishodnaya matrica A:');
VyvMtr(a,n);
Result(a,n);
writeln('Izmenennaya matrica A:');
VyvMtr(a,n);
SozdMtr(b,m,'B');
writeln('Ishodnaya matrica B:');
VyvMtr(b,m);
Result(b,m);
writeln('Izmenennaya matrica B:');
VyvMtr(b,m);
readln
end.