2016-02-12 617 views
0

我有这个程序要求用户输入多少个值,请求这些值并将它们放入一个向量中。然后我需要计算平均值和标准偏差。 我有平均的部分,但它看起来像是错误的,我得到了错误的平均。而且我不太清楚如何开始标准偏差部分。C++计算平均值和标准差

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

任何帮助表示赞赏。

+3

'double average;'是未初始化的。它具有不确定的价值。 – LogicStuff

+0

'double average; => double average = 0;'。本地标准数据类型不是初始化的。 – NathanOliver

+1

第一个'push_back'之后,'values [0]'被定义,但'values [1]'不是。等等。你的计数应该从'0'开始。 –

回答

2
  1. 使用double average = 0;而不是double average;

  2. 而且使用values[i-1]代替values[i]内循环。

为什么?

  1. 您声明的平均值并没有初始化它。为此,它具有在代码执行前无法知道的值。当您在average中添加value[i]时,表示average的值。为此,你得到错误的输出。您只需添加全部value[i]。因此,使用0初始化average.

  2. 向量索引为0。因此插入到矢量的第n个元素将在[n-1]位置找到。

+0

我仍然得到一个奇怪的答案。所以生病说不好输入4个值,只输入3,3,3,3,平均值显示为2.1496e-309。 – PFKrang

+0

@PKKrang这个答案只是你问题的一半,请看我上面的评论。 –

+0

@PKKrang,查看更新后的答案。 – MASh