説明文
演習5.22は、数値の標準偏差を計算します。この演習では、異なるが同等の式を使用して、n個の数値の標準偏差を計算します。
合計= x1 + x2 +…+ xn
平均=合計/ n
偏差= sqrt((x1-mean)^ 2 +(x2-mean)^ 2 +…+(xn-mean)^ 2)/(n-1))
この式で偏差を計算するには、配列を使用して個々の数値を保存する必要があります。これにより、平均が取得された後にそれらを使用できます。
プログラムには、次の関数を含める必要があります。
/* Function for computing mean of an array of double values */
double mean(double x[], int size)
/* Function for computing mean of an array of int values */
double mean(int x[], int size)
/* Function for computing deviation of an array of double values */
double deviation(double x[], int size)
/* Function for computing deviation of an array of int values */
double deviation(int x[], int size)
ヒント
関数の実装を送信する必要がありますが、main()関数は送信しないでください。
問題の出典:手順设计I Chapter6配列
source.h:
#ifndef UNTITLED3_SOURCE_H
#define UNTITLED3_SOURCE_H
/* Function for computing mean of an array of double values */
double mean_double(double x[], int size);
/* Function for computing mean of an array of int values */
double mean_int(int x[], int size);
/* Function for computing deviation of an array of double values */
double deviation_double(double x[], int size);
/* Function for computing deviation of an array of int values */
double deviation_int(int x[], int size);
#endif //UNTITLED3_SOURCE_H
私のコード:
// Date:2020/4/18
// Author:xiezhg5
/* Function for computing mean of an array of double values */
double mean_double(double x[], int size)
{
int i;
double sum=0,mean=0;
for(i=0;i<size;i++)
sum=sum+x[i];
mean=sum/size;
return mean;
}
/* Function for computing mean of an array of int values */
double mean_int(int x[], int size)
{
int i;
int sum=0;
double mean=0;
for(i=0;i<size;i++)
sum=sum+x[i];
mean=sum/size;
return mean;
}
/* Function for computing deviation of an array of double values */
double deviation_double(double x[], int size)
{
//下面这一大段可以调用mean函数实现太懒了
int i;
double sum=0,sum1=0,mean=0,deviation=0;
for(i=0;i<size;i++)
sum=sum+x[i];
mean=sum/size*1.0;
for(i=0;i<size;i++)
sum1=sum1+pow(x[i]-mean,2);
deviation=sqrt((sum1)/(size-1));
return deviation;
}
/* Function for computing deviation of an array of int values */
double deviation_int(int x[], int size)
{
//下面这一大段可以调用mean函数实现太懒了
int i;
int sum=0;
double sum1=0;
double mean=0;
double deviation=0;
for(i=0;i<size;i++)
sum=sum+x[i];
mean=1.0*sum/size;
for(i=0;i<size;i++)
sum1=sum1+pow(x[i]-mean,2);
deviation=sqrt((1.0*sum1)/(size-1));
return deviation;
}