计算一个4 × 4矩阵并显示所有元素的和



我正试图编码一个4 × 4矩阵并求和所有矩阵。下面是我用c++编写的代码:

#include <iostream>
using namespace std;
int main()
{
    const int size = 4;
    int sum, i, j;
    int SumMatrix[4][4];
    for (int i = 0; i < 4; i++)
    {
        cout << "Enter a  by 4 matrix row by row: n";
        cin >> i;
        for (int j = 0; j < 4; j++)
        {
            cout << "n";
            cin >> j;
        }
    }
    sum += SumMatrix[i][j];
    cout << "Sum of the matrix is" << sum << endl;
    return 0;
}

当我编译代码时,它显示没有错误。但是当我执行它的时候,它给了我这个错误。

请帮助。我是个新手,我被困住了。我不知道还有什么别的方法可以解决这个问题。

当我编译代码时,它显示没有错误。但是当我执行它的时候,它给了我这个错误。

这是因为你的程序没有syntax errors,但遇到了runtime error(s)

现在,关注外环(for(i...))。您已经编写了语句

cin >> i;

注意,i是循环控制变量。所以当你输入第一行的第一个元素时,它实际上进入了i,因此循环完全混乱了。(你可能会得到一个array index out of bounds错误在这里。)所以你要做的是修改整个嵌套循环结构成这样:

for(i = 0; i<4; i++){
    for(j=0; j<4; j++){
        cin >> SumMatrix[i][j];
        sum += SumMatrix[i][j]; //adding up the elements
   }
}
/*the array now has all the elements
  and sum stores the value of sum of all elements*/

基本上,您试图将元素读入数组,但不熟悉正确的语法。ij不直接引用第i行和第j列的元素;访问第i行第j列数组元素的正确语法是SumMatrix[i][j]

另外,注意语句

sum += SumMatrix[i][j];
代码中所写的

在循环之外,只将数组的最后一个元素添加到总和中。为了获得所有元素的和,您必须像上面所示的那样在循环中执行。

内循环中的语句

cin >> j;

没有意义。您必须输入矩阵的元素,而不是更改索引。

还有这个语句

sum += SumMatrix[i][j];

必须用循环符括起来。

你必须初始化变量sum为0。

变量ij也没有初始化

int sum, i, j;
         ^^^^^

因此这个语句

sum += SumMatrix[i][j];

导致程序的未定义行为。

你应该删除它们的声明,因为它们应该在循环中声明和使用。

程序可以按照如下方式执行

#include <iostream>
int main() 
{
    const size_t N = 4;
    int matrix[N][N] = {};
    std::cout << "Enter a " << N << " by " << N << " matrix row by row: n";
    for ( size_t i = 0; i < N; i++ )
    {
        std::cout << "Enter row " << i << ": ";
        for ( size_t j = 0; j < N; j++ ) std::cin >> matrix[i][j];
    }
    long long int sum = 0;
    for ( size_t i = 0; i < N; i++ )
    {
        for ( size_t j = 0; j < N; j++ ) sum += matrix[i][j];
    }
    std::cout << "Sum of the matrix is " << sum << std::endl;
    return 0;
}

它的输出可能看起来像

Enter a 4 by 4 matrix row by row: 
Enter row 0: 1 2 3 4
Enter row 1: 5 6 7 8
Enter row 2: 9 10 11 12
Enter row 3: 13 14 15 16
Sum of the matrix is 136

要计算总和,您还可以使用标准算法std::accumulate,该算法反过来使用std::accumulate来计算每一行。

相关内容

  • 没有找到相关文章

最新更新