1

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

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

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

#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数组中找到最大的数字?

4

3 回答 3

3

在以下代码片段中,max将包含列表中的最高数字:

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

注意:您的数组看起来太小了 - 它的大小为 2,我很确定您想要 3 的大小。

于 2012-11-05T00:42:59.313 回答
3

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

想象一下,您必须处理数以亿计的数字。然后将它们全部存储是不可取的。

当然,在内部,max_element算法和我刚才建议的一样,但它假设你已经有了容器。如果你不这样做,那么只需即时更新最大值。boost.accumulators 库可以做到这一点,但我相信你可以自己编写它——它应该只需要一两行。

于 2012-11-05T00:46:26.553 回答
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;
}
于 2012-11-05T13:25:36.813 回答