计算4乘4矩阵并显示所有元素的总和?

时间:2016-08-11 13:20:18

标签: c++ arrays for-loop matrix multidimensional-array

我正在尝试编码一个4乘4的矩阵并对所有矩阵求和。这是我用c ++编写的代码。

<system.serviceModel>

当我编译代码时,它表明它没有错误。但是当我执行它时, it gave me this error.

请帮忙。我是个菜鸟,我被困住了。我不知道任何其他解决方案。

2 个答案:

答案 0 :(得分: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];
在代码中写的

,它位于循环之外,只会将数组的最后一个元素添加到总和中。为了获得所有元素的总和,你必须在循环中完成它,如上所示。

答案 1 :(得分:-1)

内部循环中的此语句

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