Salve. L'errore di cui sopra era dovuto ad un'errata scrittura della generalizzazione del problema. Pubblico una versione del programma che tuttavia non dà risultati corretti, in particolare non fornisce la matrice prodotto ma un vettore con elementi errati. Ecco il codice:

codice:
program CalcoloProdottoDiDueMatrici(input,output);
label 99;
const n=10;
      bell=07;

type termine= record
                    riga: integer;
                    colonna: integer;
                    val: real;
              end;
     mat= array[1..n*n]of termine;

var a,b,p,q : mat;
    i,j,c,h,k,l : integer;


procedure ScriviMatriceUsandoRecord( var  q : mat );
begin

   writeln('Inserire gli elementi della matrice ciascuno separato da <INVIO>:');
   writeln;
   for c:=1 to h
            do begin
                    readln(q[c].riga);
                    readln(q[c].colonna);
                    readln(q[c].val);
               end;
   writeln;
   writeln;
   writeln('La matrice risultante e'':');
   writeln;
   writeln;
   for i:=1 to n
               do begin
                       for j:=1 to n
                                do for c:=1 to h
                                            do if(q[c].riga=i)and(q[c].colonna=j)
                                               then write(' ',(q[c]).val:2:2,' ');
                       writeln;
                  end;
end;{ fine procedura ScriviMatriceUsandoRecord }

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

   for c:=1 to h
            do 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[k].riga)=(b[k].colonna))and(a[k].riga=i)and(b[k].colonna=j)
                                                        then p[k].val:=p[k].val+(a[k].val)*(b[k].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 }
{ Corpo del programma }

begin

   writeln('-------------------------- Dati di ingresso -----------------------------');
   writeln;
   writeln;
   write('Fornire la dimensione delle due matrici quadrate di ingresso a e b: ');
   readln(l);
   h:=l*l;
   writeln;
   if l>10 then begin
                     writeln(chr(bell),'Errore nei dati di ingresso! - STOP -');
                     goto 99;
                end
           else begin
                     ScriviMatriceUsandoRecord(a);
                     ScriviMatriceUsandoRecord(b);
                     ProdottoDiMatriciUsandoRecord(a,b,p)
                end;
   99 :
   readln;

end.
Credo che l'errore sia nella procedura ProdottoDiMatriciUsandoRecord, in particolare:

codice:
for c:=1 to h
            do 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[k].riga)(b[k].colonna))and(a[k].riga=i)and(b[k].colonna=j)
                                                        then p[k].val:=p[k].val+(a[k].val)*(b[k].val);
                                       end;
dove si dovrebbe calcolare la matrice prodotto p. Qualcuno degli utenti del Forum è in grado di segnalarmi la corretta scrittura della procedura? Ve ne sarei molto grato.
Grazie a tutti!!!