读书人

简单求标准差有关问题

发布时间: 2012-04-21 14:34:44 作者: rapoo

简单求标准差问题!
程序输出结果都是0,不知道是哪里出有什么问题,求助!





#include <iostream>
#include <cmath>
using namespace std;

#define ARRAY_SIZE 50

void inputNumbers(double num[], int& numberUsed);

void getAverage(double num[], double& ave, int numberUsed);

void getSum(double num[], double ave, double& sum, int numberUsed);

void getStandardS( double sum, double& s, int numberUsed);

void displayTheResult(double s);

int main(){
double num[ARRAY_SIZE],//存放一组数
ave = 0,//平均值
sum = 0,//总和
s = 0;//标准差
int numberUsed;//数组中无数的个数

inputNumbers(num, numberUsed);
getAverage(num, ave, numberUsed);
getSum(num, ave, sum, numberUsed);
getStandardS( sum, s, numberUsed);

displayTheResult(s);
return 0;
}

void inputNumbers(double num[], int& numberUsed){
int i = 0;

cout << "Input a group numbers and enter zero to an end." << endl;
cin >> num[i];
while (num[i] != 0){
numberUsed ++;
i ++;
cin >> num[i];
}
}

void getAverage(double num[], double& ave, int numberUsed){
double sum = 0.0;

for (int i = 0 ; i < numberUsed; ++i){
sum += num[i];
}
ave = sum / static_cast<double>(numberUsed);
}

void getSum(double num[], double ave, double& sum, int numberUsed){

for (int i = 0; i < numberUsed; i++){
sum += (num[i] - ave) * (num[i] - ave);
}
}

void getStandardS( double sum, double& s, int numberUsed){
s = sqrt(sum / static_cast<double>(numberUsed));
}

void displayTheResult(double s){
cout << "the standard-deviation is :" << s << endl;
}


[解决办法]
inputNumbers(num, numberUsed);
调用这个函数的时候 numberUsed没初始化。
改为
=>
numberUsed=0;
inputNumbers(num, numberUsed);

读书人网 >C++

热点推荐