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

    Matrice in C++ di dimensioni variabili

    Ciao a tutti,

    Ho bisogno di gestire in C++ una matrice quadrata di dimensioni non note a priori, esempio

    char mat [N] [N];

    Ho scritto qualcosa del genere
    codice:
    #include <iostream>
    using namespace std
     
    int main()
    {
       int N;  // dimensione della matrice NxN
       char mat[N][N];
       int i, j; // Contatori cicli for
     
       cout << 'Definire la dimensione della matrice NxN ';
       cin >> N;
       cout << endl;
     
       cout << 'Popolare la matrice NxN ' << endl;
     
       for (i=0; i<N; i++)
       {
       for (j=0; j<N; j++)
          cin << mat[i][j];
          cout << endl;
       }
       cout << endl;
     
    }
    Inutile dire che ho un sacco di errori in compilazione e che il programma non funge .
    Essendo un apprendista, qualcuno più esperto può aiutarmi ?

    Grazie e ciao a tutti
    Gaetano

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi usare l'allocazione dinamica della matrice.

  3. #3
    Grazie per la risposta velocissima, ma, come ti ho detto, sono un neofita.
    Mi sapresti fare un esempio, sulla base del mio codice ?
    Spero di non chiedere troppo.

    Ciao e grazie ancora.
    Gaetano

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Okay ... questo e' un esempio con qualche commento ...

    codice:
    #include <iostream>
    using namespace std;  // e' necessario il ; finale
     
    int main()
    {
       int N;  
       char **mat; // Equivale alla matrice a due dimensioni
       int i, j; 
    
       cout << "Definire la dimensione della matrice NxN "; // Le virgolette devono essere doppie
       cin >> N;
       cout << endl;
    
       // Allocazione dinamica della matrice
       mat = new char*[N]; 
       for(i=0; i<N; i++) 
          mat[i] = new char[N];
    	
       // Riempimento matrice
       cout << "Popolare la matrice NxN " << endl; // Le virgolette devono essere doppie
    
       for (i=0; i<N; i++)
       {
          for (j=0; j<N; j++)
             cin >> mat[i][j];  // La cin deve essere usare l'operatore >>
    		
          cout << endl;
       }
    
       cout << endl;
    
       return 0;  // La main deve restituire un valore
    }

  5. #5
    Ciao,

    Sei stato molto chiaro e ti ringrazio di cuore.

    Ti chiedo ancora una cosa, che, poi, implicitamente dovrebbe dare risposta ad altri miei dubbi:
    "Posso usare il ciclo per popolare la matrice in una funzione separata ?"
    In questo caso come intesto la funzione ? Cioè
    void popolaMatrice(etc..etc..);

    Inoltre, prima del termine dell'esecuzione del programma debbo deallocare la matrice ?

    Grazie ancora
    Gaetano
    Gaetano

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da CARNIC
    "Posso usare il ciclo per popolare la matrice in una funzione separata ?"
    In questo caso come intesto la funzione ? Cioè
    void popolaMatrice(etc..etc..);

    Inoltre, prima del termine dell'esecuzione del programma debbo deallocare la matrice ?
    Sì ... sì ...

    Il codice diventa ...

    codice:
    void PopolaMatrice(char **mat, int ord)
    {
      for(int i=0; i<ord; i++)
      {
        for(int j=0; j<ord; j++)
          cin >> mat[i][j];
    		
        cout << endl;
      }
    
      cout << endl;
    }
    
    int main()
    {
      int N;
      char **mat;
    
      cout << "Definire la dimensione della matrice NxN ";
      cin >> N;
      cout << endl;
    
      mat = new char*[N]; 
      for(int i=0; i<N; i++) 
        mat[i] = new char[N];
    	
      PopolaMatrice(mat, N);
      
      for(int i=0; i<N; i++) 
        delete [] mat[i];
      delete [] mat;
    
      return 0;
    }
    Di nulla ...

  7. #7
    E' possibile, poi, usare la matrice inizializzata nella funzione, in altre funzioni ?

    Ciao e grazie ancora.
    Gaetano

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Certo ...

  9. #9
    Ciao Oregon,

    ho lavorato al mio progettino ampliandolo e rifinendolo, grazie alle tue dritte.

    Ora diciamo che oltre alla matrice di dimensioni NxN, di cui abbiamo già parlato, io ho un'altra matrice molto semplice 2x2.
    Voglio:
    1) Verificare se qualche elemento della matrice 2x2 appartiene anche a NxN
    2) Tenere memoria della posizione di questo elemento (le coordinate)

    Per quanto riguarda il punto 1) non ho difficoltà; riesco a scrivere il codice per cercare le ricorrenze.

    Il guaio è al punto 2). Poichè vorrei visualizzare solo alla fine tutte le coppie di cordinate non so cosa usare e soprattutto come usarlo.

    Puoi aiutarmi ancora ?

    Grazie
    Gaetano

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se sai scrivere il punto 1) (di cui puoi mostrare il codice), e' alla tua portata anche il punto 2) perche' si tratta di memorizzare le coordinata (riga, colonna) degli elementi trovati ...

    Ma partiamo dal punto 1) ... cosa hai scritto ?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.