io avrei bisogno di un aiuto per un programma che mi chiede di verificare se nelle due diagonali principali di una matrice siano contenuti gli stessi numeri, e se per caso uno non fosse contenuto dovrei stamparlo.
Vi posto il codice che sono riuscito a scrivere finora:
- Codice:
#include<iostream>
using namespace std;
main()
{
cout<<"start"<<endl;
int d1, d2; // in d1 pensavo di salvare il primo numero non contenuto nella diagonale secondaria, in d2 quello della principale
bool trovato = false; // inizializzo a false la variabile boolena perché non ho ancora trovato numeri non presenti nei 2 array
int A[6][6];
for(int i=0; i<6; i=i+1)
for(int j=0; j<6; j=j+1)
cin >> A[i][j]; // per riempire da cin la matrice 6x6
for(int i=0; i<6; i++) // qui pensavo di scorrere con i la diagonale principale e con j quella secondaria per confrontare cosi
{ // [0][0] con [0][5], [1][4], [2][3], [3][2] [4][1], [5][0] e poi proseguire con
// [1][1] con [0][5], [1][4], [2][3], [3][2] [4][1], [5][0] e cosi via fino a [5][5]
for(int j=0; j<6; j++)
{
if(A[i][i] != A[j][5-j]) // qui ho pensato che appena trova un numero della diagonale non contenuto in quella secondaria
{ // metta il flag a true, che salvi il valore della diagonale principale in d1 e che esca dal ciclo
trovato= true; // perché a me interessa solo il primo che trova, non tutti
d1 = A[i][i];
break;
}
}
}
// qui stessa cosa ma confrontando la secondaria con la principale e salvare in d2 il primo non contenuto nella principale
for(int i=0; i<6; i++)
{
for(int j=0; j<6; j++)
{
if(A[i][i-5] != A[j][j])
{
trovato= true;
d2 = A[i][i-5];
break;
}
}
}
if(!trovato)
cout <<"le due diagonali contengono gli stessi valori" << endl;
else
{
cout<<"diagonale principale contiene "<< d1 <<" che non e' sulla diagonale secondaria" << endl;
cout<<"diagonale secondaria contiene "<< d2 <<" che non e' sulla diagonale principale" << endl;
}
cout <<"end"<<endl;
}