Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [c++]Array di dimensioni scelte dall'utente.

    Salve a tutti, avrei un problema con un array di dimensioni scelto dall'utente. Essenzialmente mi restituisce un errore perchè la grandezza della variabile (righe) non è ancora definita. Infatti io la definisco dopo (nel main, chiedendo all'utente).
    A quanto ho capito ho bisogno di utilizzare le funzioni new e delete del c++ , ma non saprei bene come muovermi, qualcuno potrebbe darmi una mano? Grazie.
    (Ovvio che il programma non è completo, solo che non ho continuato perchè mi restituiva già errore)

    codice:
    /*Questo programma dovrà far inserire una matrice all'utente
    Se la matrice risulta quadrata calcolarne il vettore diagonale
    e da questo vettore fare il cout dei numeri positivi.
    In caso la matrice non sia quadrata, restituire un  errore.
    */
    
    #include <iostream>
    using namespace std;
    
    //Le variabili
    int righe ;
    int colonne;
    bool quadrata = false;
    //Le funzioni
    bool matriceQuadrata(int a,int b);
    void inserisciDati(int matrix[][righe]);
    
    int main()
    {
        //Devo prima di tutto creare la matrice con dei parametri inseriti dall'utente.
        cout << "Inserire il numero di righe della matrice" << endl;
        cin >> righe;
        cout << "Inserire il numero di colonne della matrice" << endl;
        cin >> colonne;
        //A questo punto posso creare la matrice.
        int matrix[righe][colonne];
        //Il primo passo è fare un check se la matrice è quadrata o meno, faccio una funzione.
        quadrata = matriceQuadrata(righe,colonne);
        //A questo punto devo restituire un messaggio di errore se la matrice non è quadrata (Lo metterò nell'else)
        //Invece se la matrice è quadrata, devo calcolarne la diagonale.
        if(quadrata)
        {
                    //Per la scrittura della matrice
                    inserisciDati(matrix[][righe]);
                    //Per il calcolo della diagonale
    
        }
        else cout << "Errore: La matrice non e' quadrata" << endl;
        system("PAUSE");
    }
    
    bool matriceQuadrata(int a, int b)
    {
         //Faccio un controllo: radice quadrata significa che il numero delle righe deve essere uguale al numero di colonne.
         if(a == b) return true;
         //Se sono diverse ritorno il falso
         else return false;
    }
    
    void inserisciDati(int matrix[][righe])
    {
         //Devo fare due nested for
         for(int i = 0; i < righe; i++)
         {
                 cout << "Inserire i dati della " << i << "riga della matrice" << endl;
                 for(int j = 0; j < righe; j++)
                 {
                         cin >> matrix[i][j];
                 }
         }
         
    }
    SCSA rulez

  2. #2
    Sono riuscito a risolvere
    Ecco il codice integrale nel caso qualcuno fosse interessato, scusate per il thread inutile ma non riesco ad eliminarlo.
    Grazie ugualmente

    codice:
    /*Questo programma dovrà far inserire una matrice all'utente
    Se la matrice risulta quadrata calcolarne il vettore diagonale
    e da questo vettore fare il cout dei numeri positivi.
    In caso la matrice non sia quadrata, restituire un meraviglioso errore.
    */
    
    #include <iostream>
    using namespace std;
    
    //Le variabili
    int righe ;
    int** a; 
    int colonne;
    bool quadrata = false;
    
    //Le funzioni
    bool matriceQuadrata(int a,int b);
    void inserisciDati(int **array,int righe);
    int** create2dArray(int rows, int cols);
    void print(int **ar, int rows, int cols);
    void calcoloDiagonale(int **ar,int colonne);
    
    int main()
    {
        //Devo prima di tutto creare la matrice con dei parametri inseriti dall'utente.
        cout << "Inserire il numero di righe della matrice" << endl;
        cin >> righe;
        cout << "Inserire il numero di colonne della matrice" << endl;
        cin >> colonne;
        //A questo punto posso creare la matrice.
        int** a = create2dArray(righe,colonne);
        //Il primo passo è fare un check se la matrice è quadrata o meno, faccio una funzione.
        quadrata = matriceQuadrata(righe,colonne);
        //A questo punto devo restituire un messaggio di errore se la matrice non è quadrata (Lo metterò nell'else)
        //Invece se la matrice è quadrata, devo calcolarne la diagonale.
        if(quadrata)
        {
                    //Per la scrittura della matrice
                    inserisciDati(a,righe);
                    print(a, righe,colonne);
                    //Per il calcolo della diagonale
                    calcoloDiagonale(a,colonne);
    
        }
        else cout << "Errore: La matrice non e' quadrata" << endl;
        system("PAUSE");
    }
    
    bool matriceQuadrata(int a, int b)
    {
         //Faccio un controllo: radice quadrata significa che il numero delle righe deve essere uguale al numero di colonne.
         if(a == b) return true;
         //Se sono diverse ritorno il falso
         else return false;
    }
    
    void inserisciDati(int **array,int righe)
    {
         //Devo fare due nested for
         for(int i = 0; i < righe; i++)
         {
                 cout << "Inserire i dati della " << i << "riga della matrice" << endl;
                 for(int j = 0; j < righe; j++)
                 {
                         cin >> array[i][j];
                 }
         }
         
    }
    
    
    
    int** create2dArray(int rows, int cols) {
    	int** array = new int*[rows];
    	for (int row=0; row<rows; row++) { 
    		array[row] = new int[cols];
    	}
    	return array;
    }
    
    void print(int **ar, int rows, int cols) {
    	for (int row=0; row<rows; row++) { 
    		for (int col=0; col<cols; col++) {
    			cout << " | " << ar[row][col];
    		}
    		cout << " | " << endl; 
    	}
    }
    
    void calcoloDiagonale(int** ar,int colonne)
    {
         int diagonale[colonne];
         for(int i = 0; i < colonne; i++)
         {
                 diagonale[i] = ar[i][i];
                 if(diagonale[i] > 0) cout << "Gli elementi positivi della matrice sono i seguenti: " << i << " " << endl;
         }
    }
    SCSA rulez

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.