我的学校还有另一项任务,那就是:
编写一个程序,输出三个输入数字中最大的
到目前为止,我已经这样做了:
#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
数组中找到最大的数字?
答案 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;
}