首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

简单求标准差有关问题

2012-04-21 
简单求标准差问题!程序输出结果都是0,不知道是哪里出有什么问题,求助!#include iostream#include cmath

简单求标准差问题!
程序输出结果都是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);

热点排行