PDA

Visualizza la versione completa : [C++] Matrice: confronto somma colonne e somma diagonale


Redix123
28-05-2014, 22:06
Salve a tutti, volevo fare programma c++ che confronta la somma della diagonale principale di una matrice con le somme di tutte le colonne, riportando poi il numero delle colonne la cui somma è uguale alla somma della diagonale.

sdp = somma diagonale principale
sc= vettore contenente le somma delle colonne
nc=numero di colonne la cui somma è uguale a quella della diagonale.



void Numcolonne_somma(int x[][3], int n)
{
int sdp = 0; int sc[n]; int nc = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
if (i == j)
{
sdp = sdp + x[i][j];
}
}
for (int j = 0; j < n; j++)
{
sc[j] = 0;
for (int i = 0; i < n; i++)
sc[j] = sc[j] + x[i][j];
if (sc[j] == sdp)
nc++;
}
cout << "Numero di colonne uguali= " << nc << endl;
}


Apparentemente funziona e l'ho anche provato, però dice il mio professore che fa schifo, quindi volevo dei consigli su come migliorarlo.

oregon
28-05-2014, 22:25
Già ti è stato detto che per la diagonale principale basta un solo for ... perché ripeti l'errore?

Redix123
28-05-2014, 22:30
Se apparte quello niente allora meglio di così non va:

voidNumcolonne_somma(int x[][3],int n){
int sdp =0;int sc[n];int nc =0;
for (int i=0; i < n-1; i++)
{
sdp = sdp + x[i][i];
}
for(int j =0; j < n; j++)
{
sc[j]=0;
for(int i =0; i < n; i++)
sc[j]= sc[j]+ x[i][j];
if(sc[j]== sdp)
nc++;
}
cout <<"Numero di colonne uguali= "<< nc << endl;
}

Loading