找到vector c ++的输入平均值

时间:2015-02-18 01:21:58

标签: c++ vector average

我正在尝试编写一个程序,用户可以根据需要输入任意数量的数字,然后程序返回数字的平均值。到目前为止,程序只输出输入的最后一个数字。

#include <vector>
#include <iostream>
#include <numeric>


using namespace std;

int main()
{  
    vector<float> v;
    int input;

    cout << " Please enter numbers you want to find the mean of:" <<endl;
    while (cin >> input);
    v.push_back(input);

float average = accumulate( v.begin(), v.end(), 0.0/ v.size());
cout << "The average is" << average << endl;

return 0;  

}

4 个答案:

答案 0 :(得分:27)

首先在while

之后摆脱分号
while (cin >> input);
                    ~~

其次你数学错了

std::accumulate的第三个参数是初始和的值

取而代之的是:

float average = accumulate( v.begin(), v.end(), 0.0)/v.size(); 

此外,容器数据类型的元素应与容器类型匹配,即float

使用float input ;

答案 1 :(得分:6)

您的代码中存在相当多的错误,您是否实际调试过它?这是一个有效的版本:

#include <vector>                                                               
#include <iostream>                                                             
#include <numeric>                                                              


using namespace std;                                                            

int main()                                                                      
{                                                                               
    vector<float> v;                                                            
    float input;                                                                

    cout << " Please enter numbers you want to find the mean of:" <<endl;       
    while (cin >> input)                                                        
        v.push_back(input);                                                     

    float average = accumulate( v.begin(), v.end(), 0.0)/v.size();              
    cout << "The average is" << average << endl;                                

    return 0;                                                                   

}    

答案 2 :(得分:1)

std::accumulate的第三个参数是初始值,因此您从0.0 / v.size()(非常小)开始,然后在向量中添加所有项目。

相反,你应该使用零值作为初始值,并且在计算了向量中的所有值的总和之后,除以大小。

正如其他人指出的那样,你只将最后一个值添加到矢量中。

答案 3 :(得分:0)

您可以使用vector_name.size()来获取向量中的元素数。这是我计算平均值的尝试:

  #include <iostream>
  #include <vector>

   //function to compute average
   double compute_average(std::vector<int> &vi) {

     double sum = 0;

     // iterate over all elements
     for (int p:vi){

        std::cout << "p is " << p << std::endl;
        sum = sum + p;
     }

     return (sum/vi.size());
    }

    int main(){

        std::vector <int>vi =  {5,10};
        double val;

        val = compute_average(vi);

        std::cout << "avg is " << val << std::endl;
        return 0;   
    }