我正在尝试编写一个程序,用户输入尽可能多的数字,然后程序返回数字的平均值。到目前为止,程序只输出输入的最后一个数字。
#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;
}
首先在while
之后摆脱分号
while (cin >> input);
~~
其次你数学错了
std::accumulate
的第三个参数是sum的初始值
相反:
float average = accumulate( v.begin(), v.end(), 0.0)/v.size();
此外,容器数据类型的元素应与容器类型匹配,即float
使用float input ;
您的代码中存在相当多的错误,您是否实际调试过它?这是一个工作版本:
#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;
}
std::accumulate
的第三个参数是初始值,所以你从0.0 / v.size()
(非常小)开始,然后在向量中添加所有项目。
相反,您应该使用零值作为初始值,并在计算向量中所有值的总和之后,然后除以大小。
正如其他人指出的那样,您只需将最后一个值添加到矢量中。
您可以使用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;
}