uses crt;
const nmax=3;
type matr=array[1..nmax,1..nmax] of real;
//ввод данных
procedure Vvod(var a:matr;var n:byte;c:char);
var i,j:byte;
begin
writeln('Матрица ',c);
repeat
write('Размер матрицы от 1 до ',nmax,'=');
readln(n);
until n in [1..nmax];
writeln('Введите элементы матрицы');
for i:=1 to n do
for j:=1 to n do
begin
write('el[',i,',',j,']=');
readln(a[i,j]);
end;
end;
//вывод матриц
procedure Vyvod(var a:matr;n:byte);
var i,j:byte;
begin
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:6:2);
writeln;
end;
end;
//нахождение определителя
function Det(a:matr;n:byte):real;
begin
if n=1 then Det:=0
else if n=2 then
Det:=a[1,1]*a[2,2]-a[1,2]*a[2,1]
else
Det:= a[1,1]*a[2,2]*a[3,3]-a[1,1]*a[2,3]*a[3,2]
-a[1,2]*a[2,1]*a[3,3]+a[1,2]*a[2,3]*a[3,1]
+a[1,3]*a[2,1]*a[3,2]-a[1,3]*a[2,2]*a[3,1];
end;
//транспонирование
procedure Trans(var a:matr;n:byte);
var i,j:byte;
x:real;
begin
if n>1 then
for i:=2 to n do
for j:=1 to i-1 do
begin
x:=a[i,j];
a[i,j]:=a[j,i];
a[j,i]:=x;
end;
end;
var a,b,c:matr;
na,nb:byte;
da,db:real;
s:char;
begin
clrscr;
Vvod(a,na,'A');
Vvod(b,nb,'B');
clrscr;
writeln('Исходная матрица А:');
Vyvod(a,na);
da:=Det(a,na);
writeln('Определитель=',da:0:0);
writeln('Исходная матрица B:');
Vyvod(b,nb);
db:=Det(b,nb);
writeln('Определитель=',db:0:0);
if da>db then
begin
Trans(a,na);
writeln('Определитель А больше');
writeln('Транспонированная матрица A:');
Vyvod(a,na);
end
else if db>da then
begin
Trans(b,nb);
writeln('Определитель B больше');
writeln('Транспонированная матрица B:');
Vyvod(b,nb);
end
else write('Определители равны');
readln
end.