从C ++中的整数数组中获取最大数量

时间:2012-11-05 00:39:11

标签: c++ arrays input max

我的学校还有另一项任务,那就是:

  
    

编写一个程序,输出三个输入数字中最大的

  

到目前为止,我已经这样做了:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int* numbers = new int[3];

    for(int i = 0; i < 3; i++) {
        cout << "Input number no. " << (i + 1);
        cin >> numbers[i];
        cout << endl;
    }


    system("PAUSE");
    return EXIT_SUCCESS;
}

C ++中是否有辅助函数/方法可以在我的numbers数组中找到最大的数字?

3 个答案:

答案 0 :(得分:3)

在以下代码段中,max将包含列表中的最高编号:

int i;
int max=numbers[0];
for(i=1;i<3;i++)
{
   if(numbers[i]>max) max=numbers[i];
}

注意:你的阵列看起来太小了 - 它的大小只有两个,我很确定你想要三个大小。

答案 1 :(得分:3)

有一种算法可以找到容器std::max_element)中的最大元素,但这是不合适的。您的情况可以通过常量内存消耗来解决,因此您无需存储所有数字。在任何给定的点上,您只需要记住当前的最大值。

想象一下,你必须处理一个无数的数字。然后将它们全部存储起来是不可取的。

当然,max_element算法内部与我刚刚建议的算法相同,但它假定您已经拥有容器。如果不这样做,那么只需动态更新最大值。 boost.accumulators库有一些事情要做,但我相信你自己可以写这个 - 它应该只需要一两行。

答案 2 :(得分:0)

这里不需要数组。只要看看他们进来的数字:

int largest = std::numeric_limits<int>::min();
for (int i = 0; i < 3; ++i) {
    int value;
    std::cin >> value;
    if (largest < value)
        largest = value;
}