avg,最大和总和在未知大小的数组c ++中

时间:2015-01-25 11:42:46

标签: c++ arrays

我试图用c ++编写一个控制台应用程序,让用户输入一系列数字,程序应该得到所有数字的总和,平均数,最大和第二大数。 例如:

输入几个数字:10 12 -5 20 -2 15 0

总和= 50

平均值= 8.3

最大数量= 20

第二大= 15

#include<iostream>
#include<conio.h>
using namespace std; 
int main( )
{


int a[5];

cout << "We are going to find the max value"<< endl;
int x;

    for (x=0; x<5; x++)
    {
        cout<<"insert values"<<x+1<<endl;
            cin>>a[x];
    }
    int max;
    int min;
    max = a[0];
    min = a[0];
    int e=0;
        while (e<5)
        {
            if (a[e]>max)
            {
                max = a[e];
            }

            e++;
        }
        cout<<"Max value in the array is.."<<max<<endl;

    getch();
    return 0;
 }

这是我目前的进展。 虽然,我有一些担忧。 如何让用户输入示例中的数字并将它们存储在未知大小的数组中?

在等待这个答案的时候,我会试着找出一种计算平均值,总和和第二大的方法:)

谢谢!

2 个答案:

答案 0 :(得分:1)

要输入未知数量的元素,请使用std::vector输入 直到用户告诉您停止,通常是通过输入文件结尾:

std::vector<int> values;
int i;
while ( std::cin >> i ) {
    values.push_back( i ) ;
}

如果您正在寻找其他类型的信号,那么您就是其中之一 可能必须逐行读取,检查行是否包含 你的最终标准,然后使用std::istringstream来解析 整数。

对于其余部分:它可能与练习的目标不符,但是 标准库有几个可以制作东西的功能 更简单:std::max_element,例如,或 std::accumulate。并且<conio.h>不是很便携,而且是 在支持它的系统上弃用。

答案 1 :(得分:0)

如果您无法使用std::vector,则可能需要了解dynamic memory allocation

int *a = new int[size];