program ProdottoMatrici;
const
Righe = 3;
Colonne = Righe;
type
TipoElementoMatrice = integer;
TipoMatrice = array [1..Righe, 1..Colonne] of TipoElementoMatrice;
var
m1, m2, mprod : TipoMatrice;
i, j : integer;
procedure LeggiMatrice (var matrice: TipoMatrice);
var
nome : string;
f : text;
i, j : integer;
begin
write('Nome del file dal quale leggere la matrice ? ');
readln(nome);
assign(f, nome);
reset(f);
for i := 1 to Righe do
for j := 1 to Colonne do
read(f, matrice[i,j]);
close(f)
end;
procedure SalvaMatrice (matrice: TipoMatrice);
var
nome : string;
f : text;
i, j : integer;
begin
write('Nome del file sul quale scrivere la matrice ? ');
readln(nome);
assign(f, nome);
rewrite(f);
for i := 1 to Righe do
begin
for j := 1 to Colonne do
write(f, matrice[i,j]:7);
writeln(f)
end;
close(f);
end;
procedure StampaMatrice (matrice: TipoMatrice);
var
i, j : integer;
begin
for i := 1 to Righe do
begin
for j := 1 to Colonne do
write(matrice[i,j]:7);
writeln
end;
writeln
end;
procedure MoltiplicaMatrici (matrice1, matrice2: TipoMatrice;
var matrice_prod: TipoMatrice);
var
i, j, k : integer;
begin
for i := 1 to Righe do
for j := 1 to Colonne do
begin
matrice_prod[i,j] := 0;
for k := 1 to Righe do
matrice_prod[i,j] := matrice_prod[i,j] +
matrice1[i,k] * matrice2[k,j]
end
end;
begin
LeggiMatrice(m1);
writeln('Matrice 1:');
StampaMatrice(m1);
LeggiMatrice(m2);
writeln('Matrice 2:');
StampaMatrice(m2);
MoltiplicaMatrici(m1, m2, mprod);
writeln('Matrice prodotto:');
StampaMatrice(mprod);
SalvaMatrice(mprod)
end.