Salve ragazzi!!Ho un problemino!!Ho una matrice di numeri reali di m righe ed n colonne con m e n definiti come costanti e devo trasferire i dati della matrice in un array di dimensione m*n!!Come si fa?Grazie
Salve ragazzi!!Ho un problemino!!Ho una matrice di numeri reali di m righe ed n colonne con m e n definiti come costanti e devo trasferire i dati della matrice in un array di dimensione m*n!!Come si fa?Grazie
Usa un doppio ciclo in cui trasformi il valore delle due variabili indice in quello di un altro indice secondo la formula
k = i * j
ehm non ho capito potresti spiegarmelo terra terra?grazie
io ho il caricamento matrice e prima dell'ultimo end devo fare un ciclo.Come lo faccio
program trasferisci_matrice;
uses crt;
var
matrice:array[1..4,1..4] of real;
vettore:array[1..16] of real;
i,m,n:integer;
begin
for m:=1 to 4 do
begin
for n:=1 to 4 do
begin
writeln('Inserisci il ',n,' ø elemento della ',m,' colonna');
read(matrice[m,n]);
end;
end;
end.
Devi semplicemente assegnare agli elementi del vettore, quelli della matrice, subito dopo la read, usando il valore m*n come indice
vettore[m*n]:=matrice[m,n];
Grazie per le risposte
ho fatto così ma non va
program trasferisci_matrice;
uses crt;
var
matrice:array[1..4,1..4] of real;
vettore:array[1..16] of real;
i,m,n:integer;
begin
clrscr;
for m:=1 to 4 do
begin
for n:=1 to 4 do
begin
writeln('Inserisci il ',n,' ø elemento della ',m,' colonna');
read(matrice[m,n]);
vettore[m*n]:=matrice[m,n];
readln;
end;
end;
for i:=1 to 16 do
writeln(vettore[i]);
readln;
end.
Non è così semplice, la gestione dell'indice è leggermente più sofisticata. Infatti se scrivesse:Devi semplicemente assegnare agli elementi del vettore, quelli della matrice, subito dopo la read, usando il valore m*n come indice vettore[m*n]:=matrice[m,n];
otterrebbe un risultato sbagliatocodice:Program ConvertiMatriceInVettore; const M = 4; const N = 4; var mat:array[1..N,1..M] of integer; vet:array[1..N*M] of integer; i,j:integer; begin // Popola la matrice for i := 1 to N do for j := 1 to M do mat[i,j] := i; // Stampa la matrice writeln('Matrice:'); for i:= 1 to N do begin for j:= 1 to M do begin write(mat[i,j],' '); end; writeln; end; // Matrice --> Vettore for i := 1 to N do for j := 1 to M do begin writeln('i= ',i,' j=',j,' i*j = ', i*j); vet[i*j] := mat[i, j] end; writeln(#13#10, 'Vettore:'); // Stampa vettore for i := 1 to N*M do write(vet[i],' '); end.
codice:Matrice: 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 i= 1 j=1 i*j = 1 i= 1 j=2 i*j = 2 i= 1 j=3 i*j = 3 i= 1 j=4 i*j = 4 i= 2 j=1 i*j = 2 i= 2 j=2 i*j = 4 i= 2 j=3 i*j = 6 i= 2 j=4 i*j = 8 i= 3 j=1 i*j = 3 i= 3 j=2 i*j = 6 i= 3 j=3 i*j = 9 i= 3 j=4 i*j = 12 i= 4 j=1 i*j = 4 i= 4 j=2 i*j = 8 i= 4 j=3 i*j = 12 i= 4 j=4 i*j = 16 Vettore: 1 2 3 4 0 3 0 4 3 0 0 4 0 0 0 4
Giusta osservazione quella di pallopinco ... in realta' deve essereOriginariamente inviato da giuseppe214
Grazie per le risposte
ho fatto così ma non va
program trasferisci_matrice;
uses crt;
var
matrice:array[1..4,1..4] of real;
vettore:array[1..16] of real;
i,m,n:integer;
begin
clrscr;
for m:=1 to 4 do
begin
for n:=1 to 4 do
begin
writeln('Inserisci il ',n,' ø elemento della ',m,' colonna');
read(matrice[m,n]);
vettore[m*n]:=matrice[m,n];
readln;
end;
end;
for i:=1 to 16 do
writeln(vettore[i]);
readln;
end.
vettore[(m-1)*4+n]:=matrice[m,n];
Ciao. Basta mettere una variabile indice ad esempio L inizializzata a 0 e che si incrementa all'interno del secondo ciclo in questo modo:
L:=0;
for I:=1 TO 4
Do For K:=1 To 4 do Begin
L:=L+1;
V[L]:=M[I,K];
End;
Dovrebbe funzionare..................
si funziona grazie a tutti mi avete salvato
Non vedo come possa funzionare. La versione corretta è quella di Oregon (generalizzata per matrici quadrate con N al posto di 4):Dovrebbe funzionare..................
codice:for i := 1 to N do for j := 1 to M do begin vet[(i-1)*N+j] := mat[i, j]; end;