错误的价值输出

时间:2017-06-01 18:59:47

标签: c++ arrays

我试图让程序给出数组中最低和最高的值。

这是我的代码:

     int z=10;
     int a[z]={1,2,3,4,5,6,7,8,9,10};

   for (int x=1;x<=10;x++) {
   cout << "How many pancakes were eaten by P"<<x<<endl;
   cin >> a[x];}
int maxPancakes = a[0];
int glutton;
int minPancakes = a[0];
int mN;

for (int x = 0; x <= z; x++) {

    if (a[x] >= maxPancakes) {

        maxPancakes = a[x];
        glutton = x;
    }

    else if (a[x] <= minPancakes) {

        minPancakes = a[x];
        mN = x;

    }
}

最高值的代码正常工作,但最低值的代码一直给我错误的值(随机大数字)

我感谢您的帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

首先使用标准库。它将使您的生活更轻松,代码更安全(并且大部分时间也更快)。

对于自C ++ 11以来的数组,您可以使用std::array,如果您使用较旧的C ++标准,则可以使用std::vector

请注意,在您的代码中,您正在创建包含10个元素的数组,但在第二个循环中,您将迭代11次。 0,1,2,3,4,5,6,7,8,9和...... 10。

a[10]的值未定义,可以是任何值(随机值)。

在第一个for循环中,您要设置a[1](第二个元素),a[2](第三个元素),...,a[10](第十一个元素)的值,不好!)。

修复此循环并检查会发生什么。你也可以开始调试&#34;比gdb更容易(这真是太棒了。你应该学习它)。你可以在每次迭代中简单地打印这些值(阅读std::cout),看看这个&#34;随机大数字&#34;找到了。

修改

for (int x = 0; x < 10; x++)
{
    cout << "How many pancakes were eaten by P" << x << endl;
    cin >> a[x];
}

int maxPancakes = a[0];
int glutton;
int minPancakes = a[0];
int mN;

for (int x = 0; x < z; x++)
{

    if (a[x] > maxPancakes)
    {

        maxPancakes = a[x];
        glutton = x;
    }
    else if (a[x] < minPancakes)
    {

        minPancakes = a[x];
        mN = x;
    }
}