【问题标题】:Finding the minimum value in an array (What's wrong with my code?)查找数组中的最小值(我的代码有什么问题?)
【发布时间】:2017-04-30 16:41:04
【问题描述】:

这是我对 C++ 课程的介绍。我们目前正在做数组,我正在尝试找到数组每一列的最小值。这是我所拥有的:

#include <iostream>
using namespace std;    

int main(){
int grade[4][30] = {{76, 70, 80, 90, 100, 83, 61, 63, 64, 65, 97, 69, 70, 79,60, 70, 80, 90, 100, 83, 61, 63, 99, 98, 66, 69, 70, 79},
                    {74, 70, 80, 90,60, 61, 93, 88, 73, 65, 91, 69, 70, 79, 60, 70, 80, 90, 60, 83, 61, 63, 64, 65, 66, 69, 67, 74},
                    {72, 70, 80, 90, 99, 84, 62, 63, 99, 65, 66, 69, 70, 79, 60, 70, 80, 90, 99, 83, 61, 63, 64, 65, 66, 69, 70, 77},
                    {69, 70, 80, 90, 60, 61, 86, 63, 97, 97, 66, 69, 70, 79, 97, 70, 80, 90, 88, 83, 88, 63, 64, 65, 66, 69, 70, 79}};

int a;
for(int x = 0; x < 4; ++x){
    a = grade[x][0];
    for(int y = 0; y < 30; ++y){
        if( a > grade[x][y])
            a = grade[x][y];
            cout << "a is " << a << " for the " << y << "time" << endl;}
    cout << a << endl;}



return 0;

}

我的问题是我不明白为什么在最后两个循环中值变为 0?真正的答案应该是每行 60。

P.S 我用它来找到最大值并且它起作用了,但是不明白为什么它在这里不起作用?

【问题讨论】:

  • 写一个找到一维数组最小值的函数,然后使用该函数解决二维数组的问题怎么样?编程就是写函数。
  • 这是您找到最小值的代码吗?如果没有,请改为包含它,因为这看起来是为了找到最大值。我也同意@NeilButterworth 的观点,即查找一维结果的函数会很有用
  • @Graeme:它的写法有误导性,但这实际上是在寻找最小值。不过,如果他将比较与if (grade[x][y] &lt; a) a = grade[x][y]; 颠倒过来,可能会更明显。
  • @JerryCoffin 啊,是的,我现在看到了。嗬!大脑似乎睡着了
  • @Graeme:如果有什么安慰的话,我已经准备好了答案,因为几分钟前,我开始写几乎相同的评论。

标签: c++ arrays loops for-loop


【解决方案1】:

for(int y = 0; y

这是因为例如您的第一个数组仅包含 28 个显式初始化元素,并且您迭代到 30 个(见上文)。没有自己初始化的元素被初始化为0。

【讨论】:

    【解决方案2】:

    您的数组初始值设定项少于 30 个数字。由于您的数组被声明为包含 30 个元素,因此其余条目设置为 0

    由于您的数据中似乎没有 0,因此您可以使用 0 作为知道停止循环的标记。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多