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

C++ 从C+;中的整数数组中获取最大数+;,c++,arrays,input,max,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 <<

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

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

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

#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;
}
#包括
#包括
使用名称空间std;
int main(int argc,char*argv[])
{
整数*数字=新整数[3];
对于(int i=0;i<3;i++){
cout数[i];

cout在下面的代码段中,
max
将包含列表中的最大数字:

int i;
int max=numbers[0];
for(i=1;i<3;i++)
{
   if(numbers[i]>max) max=numbers[i];
}
inti;
int max=数字[0];
对于(i=1;imax)max=number[i];
}

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

在下面的代码段中,
max
将包含列表中的最大值:

int i;
int max=numbers[0];
for(i=1;i<3;i++)
{
   if(numbers[i]>max) max=numbers[i];
}
inti;
int max=数字[0];
对于(i=1;imax)max=number[i];
}

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

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

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


当然,在内部,
max_元素
算法与我刚才建议的一样,但它假定您已经拥有了容器。如果没有,则只需动态更新最大值。boost.acculators库可以做到这一点,但我相信您可以自己编写—它应该只需要一两行。

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

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


当然,在内部,
max_元素
算法与我刚才建议的一样,但它假定您已经拥有了容器。如果没有,则只需动态更新最大值。boost.acculators库可以做到这一点,但我相信您可以自己编写—它应该只需要一两行。

这里不需要数组。只要看看这些数字就可以了:

int largest = std::numeric_limits<int>::min();
for (int i = 0; i < 3; ++i) {
    int value;
    std::cin >> value;
    if (largest < value)
        largest = value;
}
int max=std::numeric_limits::min();
对于(int i=0;i<3;++i){
int值;
标准:cin>>值;
if(最大值<值)
最大=价值;
}

这里不需要数组。只要看看这些数字就可以了:

int largest = std::numeric_limits<int>::min();
for (int i = 0; i < 3; ++i) {
    int value;
    std::cin >> value;
    if (largest < value)
        largest = value;
}
int max=std::numeric_limits::min();
对于(int i=0;i<3;++i){
int值;
标准:cin>>值;
if(最大值<值)
最大=价值;
}

是的,有
std::max_元素
:它需要迭代器作为参数(一个到数组的开头,一个到数组的结尾)。您可以将指针用作迭代器。您的输入代码是错误的。如果你不明白为什么,一定要学会如何在C++中使用IOFFROW。作为测试,如果您调用
echo”“| myprogram
@KerrekSB谢谢您的建议:)您知道将有三个数字,您只需使用
int numbers[3]
即可,而不是使用
new
创建数组并忘记删除它。是的,有
std::max_元素
:它需要迭代器作为参数(一个到数组的开头,一个到数组的结尾)。您可以将指针用作迭代器。您的输入代码是错误的。如果你不明白为什么,一定要学会如何在C++中使用IOFFROW。作为测试,如果您调用
echo”“| myprogram
@KerrekSB谢谢您的建议:),您的程序必须能够生存。因为您知道将有三个数字,所以您可以使用
int numbers[3]
,而不是使用
new
创建数组并忘记删除它。