Riporto qui una correzione nella procedura ProdottoDiMatriciUsandoRecord, nella quale si dovrebbero calcolare i termini della matrice prodotto p=a*b, in modo che risulti:

p11=a11*b11+a12*b21+...a1n*bn1, p12=a11*b21+a12*b22+...

ecco la procedura con la correzione:

codice:
procedure ProdottoDiMatriciUsandoRecord( a : mat; b : mat ; var  p : mat);
begin

   for i:=1 to n
            do for j:=1 to n
                        do begin
                                p[c].riga:=i;
                                p[c].colonna:=j;
                                p[c].val:=0;
                                for k:=1 to h
                                         do if((a[c].colonna)=(b[c].riga))and((a[c].riga)=j)and((b[c].colonna=i))
                                            then p[c].val:=p[c].val+(a[c].val)*(b[c].val);
                           end;
   writeln;
   writeln;
   writeln('La matrice prodotto risultante e'':');
   writeln;
   writeln;
   for i:=1 to n
               do begin
                       for j:=1 to n
                                do for c:=1 to h
                                            do if(p[c].riga=i)and(p[c].colonna=j)
                                               then write(' ',(p[c]).val:4:2,' ');
                       writeln;
                  end;
end;{ fine procedura ProdottoDiMatriciUsandoRecord }

Ma il risultato della compilazione è il solito errore intero 334!!!