Заданы три матрицы А(первого порядка), В(второго) и С(третьего). Выяснить и напечатать, сколько из них являются симметрическими. (матрица называется симметрической, если транспонированная матрица равна исходной). Транспонирование матрицы оформить в виде подпрограммы — Pascal(Паскаль)

uses crt;
const n=3;
type matr=array[1..n,1..n] of integer;
procedure Vvod(var a:matr;x:integer;c:char);
var i,j:integer;
begin
writeln('Введите ',x*x,' элементов матрицы ',c);
for i:=1 to x do
for j:=1 to x do
 begin
  write('el[',i,',',j,']=');
  readln(a[i,j]);
 end;
clrscr;
end;
procedure Vyvod(var a:matr;x:integer;c:string);
var i,j:integer;
begin
writeln('Матрица ',c);
for i:=1 to x do
 begin
   for j:=1 to x do
   write(a[i,j]:4);
   writeln;
 end;
writeln;
end;
procedure Trans(a:matr;x:integer;var b:matr);{транспонирование}
var i,j:integer;
begin
for i:=1 to x do
for j:=1 to x do
b[i,j]:=a[j,i];
end;
function Srav(a,b:matr;x:integer):boolean;{сравнение}
var i,j:integer;
begin
Srav:=true;
for i:=1 to x do
for j:=1 to x do
if a[i,j]<>b[i,j] then
 begin
  Srav:=false;
  exit;
 end;
end;
var a,b,c,a1,b1,c1:matr;
    k:integer;
begin
clrscr;
Vvod(a,1,'A');
Vvod(b,2,'B');
Vvod(c,3,'C');
Vyvod(a,1,'A');
Trans(a,1,a1);
Vyvod(a1,1,'A1');
k:=0;
if Srav(a,a1,1) then k:=k+1;
Vyvod(b,2,'B');
Trans(b,2,b1);
Vyvod(b1,2,'B1');
if Srav(b,b1,2) then k:=k+1;
Vyvod(c,3,'C');
Trans(c,3,c1);
Vyvod(c1,3,'C1');
if Srav(c,c1,3) then k:=k+1;
write('Симметрических матриц=',k);
readln
end.

Leave a Comment

36 + = 44