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

问题描述 投票:3回答:4

我正在尝试编写一个程序,用户输入尽可能多的数字,然后程序返回数字的平均值。到目前为止,程序只输出输入的最后一个数字。

#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;  

}
c++ vector average
4个回答
27
投票

首先在while之后摆脱分号

while (cin >> input);
                    ~~

其次你数学错了

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

相反:

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

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

使用float input ;


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;                                                                   

}    

1
投票

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

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

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


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;   
    }
© www.soinside.com 2019 - 2024. All rights reserved.