Salve a tutti amici del Forum!!!Voglio sottoporvi un problema da risolvere mediante un programma redatto in linguaggio Pascal che mi dà purtroppo un errore a tempo di compilazione che non riesco ad interpretare ( è per questo che chiedo il vostro aiuto). Si tratta di realizzare un programma che calcoli il prodotto di due matrici quadrate di ordine n, che non supporremo mai superiore a 10, usando per rappresentare le medesime la nozione di record, dunque sia le matrici da moltiplicare che quella risultante saranno del tipo:
codice:type termine= record riga: integer; colonna: integer; val: real; end; mat= array[1..n*n]of termine;
Il programma che ho elaborato è il seguente:
Solo che quando vado a compilarlo (uso il compilatore Dev-Pascal) mi dà il seguente risultato: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 : 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 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) 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 } { Corpo del programma } begin writeln('-------------------------- Dati di ingresso -----------------------------'); writeln; writeln; write('Fornire la dimensione n delle due matrici quadrate di ingresso a e b: '); readln(n); h:=n*n; writeln; if n>10 then begin writeln(chr(bell),'Errore nei dati di ingresso! - STOP -'); goto 99; end else begin ScriviMatriceUsandoRecord(a); writeln; ScriviMatriceUsandoRecord(b); writeln; ProdottoDiMatriciUsandoRecord(a,b,p) end; 99 : readln; end.
Fatal: Internal error 334.
Qualcuno è in grado di spiegarmi il significato dell'errore interno 334, poichè cercando con Google non sono riuscito a trovare granchè, ed è altresì in grado di dirmi quindi se il programma è corretto o come fare per eliminare l'errore? Grazie mille per la collaborazione. Ciao!!!![]()

