我有这个程序,它询问用户用户将输入多少个值,询问值并将它们放入向量中。然后我需要计算平均值和标准差。 我有平均部分,但看起来有些不对劲,我得到了错误的平均值。我不太确定如何开始标准偏差部分。
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main()
{
// Create vector
vector<double> values;
// Declare variables
double count;
double value;
double average;
double stdDev;
// Prompt user and get the number of values
cout << "How many values will you enter?\n";
cin >> count;
// Get the values from user and calculate average
for( double i = 1; i<= count; i++)
{
cin >> value;
values.push_back(value);
average+=values[i];
}
cout << average/count << '\n';
//Calculate standard deviation
return 0;
}
感谢任何帮助。
答案 0 :(得分:2)
使用double average = 0;
代替double average;
在循环中使用values[i-1]
代替values[i]
。
为什么呢?
您宣布平均值并未初始化它。为此,它具有在代码执行之前无法知道的值。当您添加value[i]
average
时average
的值为value[i]
。为此你输错了。您只需要添加所有average
。因此,使用0初始化extract()
。
矢量索引是基于0的。因此,插入到矢量的第n个元素将在[n-1]个位置找到。