Составить подпрограмму умножения двух матриц произвольной размерности. Используя ее вычислить N-ую степень квадратной матрицы — Pascal(Паскаль)

uses
  crt;
const
  n=3;
type
  MyArr=array[1..n,1..n]of longint;
var
  a,b,c:MyArr;
  i,j:integer;

procedure Pr(const a,b:MyArr; var c:MyArr);
var
  i,j,k:integer;
begin
  for i:=1 to n do
    for j:=1 to n do
    begin
      c[i,j]:=0;
      for k:=1 to n do
        c[i,j]:=c[i,j]+a[i,k]*b[k,j];
    end;
end;

procedure mm(const a:MyArr; var b:MyArr);
var
  i,j:integer;
begin
  for i:=1 to n do
    for j:=1 to n do
      b[i,j]:=a[i,j]
end;

begin
  clrscr;

  writeln('--------- A:');
  for i:=1 to n do
  begin
    for j:=1 to n do
    begin
      a[i,j]:=random(8)-4;
      b[i,j]:=a[i,j];
      write(a[i,j]:3,' ')
    end;
    writeln
  end;
  for i:=1 to n-1 do
  begin
    Pr(a,b,c);
    mm(c,b)
  end;
  writeln('Itogo:');
  for i:=1 to n do
  begin
    for j:=1 to n do
      write(c[i,j]:3,' ');
    writeln
  end
end.

Leave a Comment

60 − = 58