C ++数组不考虑负数

时间:2015-07-29 01:48:33

标签: arrays

我正在尝试编写一个简单的代码来获取数组的最小值和最大值。问题是,如果我选择将这个值序列设置为5 2 -13 5 1.输出是最大数字是5最小数字是1.为什么代码忽略了负数?同样的事情,如果我把一个负数的序列,如-2 -4 -123 -4 5,最大数字是5,最小值是-4

我无法理解为什么!

cout<<"Enter the Value of the Array"<<endl;
cin>>valueOfArray;
cout<<"Enter the Array Elements"<<endl;
for(int i=0; i<valueOfArray;i++)
{
    cin>>ArrayOfNumbers[i];
    minimum=ArrayOfNumbers[0];
    if(ArrayOfNumbers[i]>maximum)
    {
        maximum=ArrayOfNumbers[i];
    }

    else if(ArrayOfNumbers[i]<minimum)
    {
        minimum=ArrayOfNumbers[i];
    }

}
cout<<"the Maximum number is "<<maximum<<endl;
cout<<"The Minimum number is "<<minimum<<endl;

2 个答案:

答案 0 :(得分:1)

有一些问题,其中一些问题在其他答案中有所指出。

最终,为了获得正确的输出,您必须将minimummaximum变量初始化为阵列外的极端对立面。

#include<climits>

long minimum = LONG_MAX;
long maximum = LONG_MIN;

for(int i = 0; i < valueOfArray; i++){
     cin>>ArrayOfNumbers[i];
     if (ArrayOfNumbers[i] > maximum) {
          maximum = ArrayOfNumbers[i];
     } else if (ArrayOfNumbers[i] < minimum) {
          minimum = ArrayOfNumbers[i];
     }
}

此解决方案将确保LONG_MIN

答案 1 :(得分:0)

你的循环逻辑有点不对。

也许这可以帮助

minimum=0;
maximum=0;
for(int i=0; i<valueOfArray;i++){
     cin>>ArrayOfNumbers[i];
     if(ArrayOfNumbers[i]>maximum){
          maximum=ArrayOfNumbers[i];
     }

     else if(ArrayOfNumbers[i]<minimum){
          minimum=ArrayOfNumbers[i];
     }
}
发生这种情况是因为每次输入数据时,都会将最小值更改为第一个数据。