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