Ho bisogno di calcolare la somma di due diagonali in una matrice in C++, ho già una soluzione per questo ma devo essere stupido perché non capisco cosa sta facendo, quindi vorrei Mi piacerebbe sapere se c'è un'altra versione che posso capire. ecco il codice che fa il lavoro:calcola la somma di diagonali in una matrice
cout<<"Jepi rangun e matrices"<<endl; // pra bejme manipulim me matrice katrore ku rreshtat=kolonat
cin>>n;
cout<<"Tani jepi elementet e matrices"<<endl; // lexohet matrica
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cin>>a[i][j];
}
d=0;
s=0; // ketu e keni kushtin si dhe mbledhjen per te dy diagonalet me dy variabla te ndryshme
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(i==j)
d=d+a[i][j];
if(j==n-i+1 || i==n-j+1)
s=s+a[i][j];
}
La parte che è difficile da capire è
if(j==n-i+1 || i==n-j+1)
s=s+a[i][j];
Qui è l'intero codice che ho cambiato, ma pretende molto lavoro per la diagonale secondaria:
#include <iostream>
using namespace std;
int main()
{
int d=0,s=0; // ketu e keni kushtin si dhe mbledhjen per te dy diagonalet me dy variabla te ndryshme
int i,j,n;
int a[5][5];
cout<<"Jepi rangun e matrices"<<endl; // pra bejme manipulim me matrice katrore ku rreshtat=kolonat
cin>>n;
cout<<"Tani jepi elementet e matrices"<<endl; // lexohet matrica
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cin>>a[i][j];
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i==j)
d+=a[i][j]; //principal diagonal
if(i+j==n-1)
s+=a[i][j];//secondary diagonal
}
}
cout << d << endl;
cout << s << endl;
cin.get();
cin.get();
return 0;
}
Avete una domanda specifica su qualche parte questo codice? –
@DrewDormann si questo è il problema: if (j == n-i + 1 || i == n-j + 1) s = s + a [i] [j]; –