uses crt;
type matr=array[1..7,1..7] of integer;
procedure Vvod(var mt:matr;x:byte;c:char);{создание матриц, матрица, ее размер и имя}
var i,j:byte;
begin
writeln('Введите ',x*x,' елементов матрицы ',c);
for i:=1 to x do
for j:=1 to x do
begin
write('el[',i,',',j,']=');{поскольку симметричную матрицу рандомно не ввести, придется ручками}
readln(mt[i,j]);
end;
clrscr;
end;
procedure Vyvod(var mt:matr;x:byte;c:char);{выврд матриц на экран}
var i,j:byte;
begin
writeln('Матрица ',c);
for i:=1 to x do
begin
for j:=1 to x do
write(mt[i,j]:5);
writeln;
end;
end;
procedure Simm(mt:matr;x:byte;var k:byte);{проверка симметричности, выходной параметр к 1 или 0}
var i,j:byte;
begin
k:=1;
i:=2;{начнем со второй строки, в первой 1 элемент на диагонали, проверять не нужно}
while (k=1) and(i<=x) do{пока симметрично и не кончились строки}
begin
j:=1;{с первого элемента в строке}
while (k=1) and(j<=i-1) do{пока симметрично и не дошли до главной диагонали}
if mt[i,j]<>mt[j,i] then k:=0{проверяем, если елементы не совпадают над диагональю и под ней,
то не симметричная к=0}
else j:=j+1;{иначе идем дальше}
i:=i+1;
end;
end;
var a,b:matr;
b1,b2:byte;
begin
clrscr;
Vvod(a,5,'A');{создаем матрицу с фактическими параметрами}
Vyvod(a,5,'A');{выводим ее}
Simm(a,5,b1);{проверяем на симметричность, выводим 0 или 1}
writeln('B1=',b1);
Vvod(b,7,'B');
Vyvod(b,7,'B');
Simm(b,7,b2);
writeln('B2=',b2);
readln
end.