Tôi cần tính tổng hai đường chéo trong ma trận trong C++, tôi đã có giải pháp cho điều đó nhưng tôi phải câm vì tôi không thể hiểu nó đang làm gì, vì vậy tôi sẽ muốn biết nếu có một phiên bản khác mà tôi có thể hiểu được. đây là đoạn code mà không được công việc:tính tổng các đường chéo trong ma trận
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];
}
Phần này rất khó hiểu là
if(j==n-i+1 || i==n-j+1)
s=s+a[i][j];
Dưới đây là toàn bộ mã mà tôi đã thay đổi nhưng nó không làm việc cho đường chéo thứ:
#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;
}
Bạn có một câu hỏi cụ thể về bất kỳ phần nào mã này? –
@DrewDormann vâng đây là vấn đề: nếu (j == n-i + 1 || i == n-j + 1) s = s + a [i] [j]; –