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]; } } }

Rispondi quotando