Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [Turbo Pascal]Trasferire matrice in un array

    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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,461
    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

  3. #3
    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.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,461
    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];

  5. #5
    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.

  6. #6
    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];
    Non è così semplice, la gestione dell'indice è leggermente più sofisticata. Infatti se scrivesse:

    codice:
    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.
    otterrebbe un risultato sbagliato

    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

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,461
    Originariamente 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.
    Giusta osservazione quella di pallopinco ... in realta' deve essere

    vettore[(m-1)*4+n]:=matrice[m,n];

  8. #8
    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..................

  9. #9
    si funziona grazie a tutti mi avete salvato

  10. #10
    Dovrebbe funzionare..................
    Non vedo come possa funzionare. La versione corretta è quella di Oregon (generalizzata per matrici quadrate con N al posto di 4):

    codice:
    for i := 1 to N do
      for j := 1 to M do
       begin
         vet[(i-1)*N+j] := mat[i, j];
       end;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.