10/05/10 16:44
Suxdario88
Salve a tutti ragazzi, sono nuovo su questo forum e vi scrivo in quanto sono un pò infognato con un programmino che ci hanno assegnato all'università...
Penso di essere arrivato a buon punto, ma qualcosa alla fine non quadra... potete darmi qualche consiglio per migliorare il mio progetto e magari trovare qualche imprecisione da correggere??
grazie mille!!!
Penso di essere arrivato a buon punto, ma qualcosa alla fine non quadra... potete darmi qualche consiglio per migliorare il mio progetto e magari trovare qualche imprecisione da correggere??
grazie mille!!!
Program ProdottoMatriciale(output); Type mioTipo = Array of Real; (* La matrice Ë di numeri reali *) var R1,R2,C1,C2: Integer; (* Dimensioni delle matrici *) Var myArray1 : mioTipo; (* Matrice vera e propria *) myArray2 : mioTipo; (* Stampa la schermata iniziale *) procedure printWS(); begin Writeln('***********************'); Writeln('* Prodotto tra *'); Writeln('* Matrici *'); Writeln('***********************'); Writeln(); (*Stampa una riga vuota*) end; (* Stampa la matrice con 2 cicli FOR *) procedure printMatrice(mat: mioTipo; R: Integer; C: Integer); var i,j: Integer; begin For i:=0 to R-1 do begin For j:=0 to C-1 do begin Write(mat[i*C+j]); end; Writeln; end; end; (* Fa il prodotto tra matrici: ris(i,j) = m1(i,k)*m2(k,j) Per k = 1..R1 *) procedure product(m1,m2: mioTipo; R1,C1,R2,C2: Integer); var i,j,k: Integer; var attuale: Real; begin attuale :=0; (* Il singolo elemento. Viene azzerato ogni volta dopo che l'ho stampato *) For i:=0 to R1-1 do begin For j:=0 to C2-1 do begin For k:=0 to R1-1 do begin attuale := attuale + m1[i*C1+k]*m2[k*C2+j] end; Write(attuale); attuale :=0 end; Writeln() end end; (* Questo e' il main *) var i,j: Integer; begin printWS(); (* Dati di input *) Write('Inserisci il numero di righe della prima matrice:'); Readln(R1); Write('Inserisci il numero di colonne della prima matrice:'); Readln(C1); Write('Inserisci il numero di righe della seconda matrice:'); Readln(R2); Write('Inserisci il numero di colonne della seconda matrice:'); Readln(C2); (* Controllo se il prodotto di puÚ fare ( C1 = R2) *) if C1 = R2 then begin SetLength(myArray1,R1*C1); (* Alloco memoria per la matrice *) SetLength(myArray2,R2*C2); (* Alloco memoria per la matrice *) Writeln('Inserisci la prima matrice'); For i:=0 to R1-1 do begin For j:=0 to C1-1 do begin Write('Inserisci: Matrice[',i,',',j,']='); Readln(myArray1[i*C1+j]); end; end; Writeln('Hai inserito questa matrice: '); printMatrice(myArray1,R1,C1); Writeln('Inserisci la seconda matrice'); For i:=0 to R2-1 do begin For j:=0 to C2-1 do begin Write('Inserisci: Matrice[',i,',',j,']='); Readln(myArray2[i*C2+j]); end; end; Writeln('Hai inserito questa matrice: '); printMatrice(myArray2,R2,C2); Writeln('Verr‡ ora eseguito il prodotto. Premi INVIO per continuare'); Readln(); product(myArray1,myArray2,R1,C1,R2,C2); end else Writeln('Operazione non permessa: C1!=R2') end.
aaa