Ho provato a modificare ancora la procedura ProdottoDiMatriciUsandoRecord, introducendo tre cicli while concatenati relativi rispettivamente alle variabili c,i,j e ciascuno racchiudente l'altro e poi ho inserito un istruzione goto in quella relativa alla variabile i, dopo averla incrementata, in modo da impedire che nel calcolo degli elementi di p(matrice prodotto) vengano sommati i prodotti dei corrispondenti elementi di tutta l'intera matrice e non solo la singola riga e colonna selezionata. La procedura così modificata è la seguente:


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

   while(c>=1)and(c<=h)
   do begin
           while(i>=1)and(i<=l)
           do begin while(j>=1)and(j<=l)
                    do begin
                            p[c].riga:=i;
                            p[c].colonna:=j;
                            p[c].val:=0;
                            for k:=1 to l
                                     do if(a[k].riga=i)and(b[k].colonna=j)and(a[k].colonna=b[k].riga)
                                        then p[c].val:=p[c].val+(a[k].val)*(b[k].val);
                            j:=j+1;
                       end;
                    i:=i+1;
                    goto 1;
              end;
      1 : c:=c+1;
      end;
   writeln;
   writeln;
   writeln('La matrice prodotto risultante e'':');
   writeln;
   writeln;
   for i:=1 to l
               do begin
                       for j:=1 to l
                                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 }
Tuttavia il risultato non è ancora una la matrice prodotto!!!