矩阵中行和列的总和

时间:2020-12-29 05:47:58

标签: c++ arrays multidimensional-array

当我使用不同数量的行和列时会出现问题,例如 2 x 3 否则,它运行正常。列的总和输出垃圾值 我似乎无法理解错误在哪里。

    #include <iostream>
    #include <conio.h>
    using namespace std;
    int main ()
    {
    int a[10][10];
    int i,row,column, j, s = 0, sum = 0;
    cout<<"Enter Number of rows: ";
    cin>>row;
    cout<<"Enter Number of columns: ";
    cin>>column;
    cout<< "Enter elements Matrix \n";
    for (i = 0; i < row; i++)
        for (j = 0; j < column; j++)
            cin >> a[i][j];

    cout << "Matrix Entered By you is \n";
    for (i = 0; i < row; i++)
    {
        for (j = 0; j <column; j++)
            cout << a[i][j] << " ";
        cout << endl;
    }

    for (i = 0; i < row; i++)
    {
        for (j = 0; j <column; j++)
            s = s + a[i][j];
        cout << "Sum of Row " << i + 1 << " is: " << s;
        s = 0;
        cout << endl;
    }
    cout << endl;
    for (i = 0; i < row; i++)
    {
        for (j = 0; j < column; j++)
            s = s + a[j][i];
        cout << "Sum of Column " << i + 1 << " is: " << s;
        s = 0;
        cout << endl;
    }
}

1 个答案:

答案 0 :(得分:1)

您没有正确迭代以获得列总和,columnrow 已切换。更改为:

for (i = 0; i < column; i++) // <-----
{
    for (j = 0; j < row; j++) // <-----
        s = s + a[j][i];
    cout << "Sum of Column " << i + 1 << " is: " << s;
    s = 0;
    cout << endl;
}

考虑一个 3x4 矩阵:

1 2 3 4 
1 2 3 4 
1 2 3 4 

您当前的循环将以以下方式访问它,调用未定义的行为。

[1] [2] [3] 4
[1] [2] [3] 4
[1] [2] [3] 4 
[?] [?] [?]