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