Necesito calcular la suma de dos diagonales en una matriz en C++, ya tengo una solución para eso, pero debo ser tonto porque no puedo entender lo que está haciendo, entonces lo haría Me gustaría saber si hay otra versión que pueda entender. aquí está el código que hace el trabajo:calcule la suma de diagonales en una matriz
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 que es difícil de entender es
if(j==n-i+1 || i==n-j+1)
s=s+a[i][j];
Aquí está todo el código que he cambiado, pero no funciona para la diagonal secundaria:
#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;
}
¿Tiene una pregunta específica sobre ¿Alguna parte de este código? –
@DrewDormann, sí, este es el problema: if (j == n-i + 1 || i == n-j + 1) s = s + a [i] [j]; –