我试图让程序给出数组中最低和最高的值。
这是我的代码:
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;
}
}
最高值的代码正常工作,但最低值的代码一直给我错误的值(随机大数字)
我感谢您的帮助,谢谢。
答案 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;
}
}