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