【问题标题】:Calculating sum in 2d array for each row为每一行计算二维数组中的总和
【发布时间】:2021-12-23 06:50:04
【问题描述】:

我对 C++ 很陌生,我正在尝试做一些关于数据处理和二维数组的练习 所以我的问题是,当我尝试运行这段代码来计算二维数组中第一行的总和时,我似乎得到了奇怪的结果,而我使用的数据文件应该是这样的

1 19 93 92 87
1 20 76 87 75
1 19 75 87 80
1 22 86 23 30
1 20 89 82 29
1 21 28 39 31
1 22 39 21 49
1 20 40 39 19
1 20 22 11 22
1 19 75 90 15

这是我使用的代码

void sumRow(){
    int data [10][5];
    float sum;
    ifstream f("datafile.txt");
    for(int row = 0; row < 10; row++){
        for(int column = 0; column < 5; column++){
            f >> data[row][column];
        }
    }
    for (int column = 2; column < 5;column++){
        sum+= data[1][column];
    }
    cout << sum;
}

【问题讨论】:

  • 您看到的奇怪输出是什么?
  • 为什么在添加行的值时从第三列开始?
  • float sum; -- 你的编译器警告过你未初始化的变量吗?您的程序具有未定义的行为,因为您将 data[1][column] 添加到名为 sum 的未初始化的 float 变量中。
  • 终于修好了!我输错了列数,似乎我忘记将总和初始化为 0。非常感谢。我自己不会注意到它
  • 在行尾隐藏} 被认为是一种不好的做法。

标签: c++ arrays loops


【解决方案1】:

你的第一行索引不应该是 0 而不是 1,如果你想要第一行的所有元素的总和,那么为什么用 column = 2 而不是 column = 0 开始 for 循环。

【讨论】:

    【解决方案2】:

    c++中数组的第一行(和列)的索引是0,所以如果你想计算第一行上的项目的总和你应该这样做:

    for (int column = 0; column < 5; column++){
        sum += data[0][column];
    }
    

    【讨论】:

      猜你喜欢
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      • 2019-12-11
      • 2012-07-23
      • 1970-01-01
      • 2021-08-13
      • 2021-12-04
      相关资源
      最近更新 更多