Перемножение матриц

rodan1217

Даны действительные квадратные матрицы А и В 4 -го порядка. получить АВ.
2 ответа

rodan1217

Взято с Вычислить В*А*С. Произведение двух матриц находить в процедуре от Puporev:
uses
  crt;
 
const
  nmax = 10;
 
var
  n: byte;
 
type
  matr = array[1..nmax, 1..nmax] of real;
 
procedure Vvod(var mt: matr);
var
  i, j: byte;
begin
  for i := 1 to n do
    for j := 1 to n do
      mt[i, j] := 10 * random;
end;
 
procedure Vyvod(mt: matr; c: string; k: byte);{k-число позиций под эл-ты матриц}
var
  i, j: byte;
begin
  writeln(c, ':');
  for i := 1 to n do
  begin
    for j := 1 to n do
      write(mt[i, j]:8:k);
    writeln;
  end;
  write('Нажмите Enter');
  readln
end;
 
procedure UmnMatr(m1, m2: matr; var m: matr);
var
  i, j, k: byte;
begin
  for k := 1 to n do
    for j := 1 to n do
    begin
      m[k, j] := 0;
      for i := 1 to n do
        m[k, j] := m[k, j] + m1[k, i] * m2[i, j];
    end;
end;
 
var
  a, b, ab: matr;
 
begin
  randomize;
  n := 4;
  Vvod(a);
  Vvod(b);
  Vyvod(a, 'Matrica A', 3);{исходная А}
  Vyvod(b, 'Matrica B', 3);{исходная B}
  UmnMatr(a, b, ab);{A*B}
  Vyvod(ab, 'Matrica D=A*B', 3);
end.


rodan1217

uses crt;
const n=4;
type mtr=array[1..n,1..n] of integer;
procedure vvod(var a:mtr);
var i,j:byte;
begin
for i:=1 to n do
for j:=1 to n do
a[i,j]:=1+random(10);
end;
procedure vyvod(a:mtr;s:string);
var i,j:byte;
begin
writeln(s);
for i:=1 to n do
 begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln;
 end;
end;
procedure umn(a,b:mtr;var c:mtr);
var i,j,k:byte;
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;
var a,b,c:mtr;
begin
randomize;
vvod(a);
vvod(b);
vyvod(a,'Матрица А');
vyvod(b,'Матрица B');
umn(a,b,c);
vyvod(c,'Матрица C=А*B');
end.