作业帮 > 综合 > 作业

编程计算平均值与标准差的一道题

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/06/26 02:03:53
编程计算平均值与标准差的一道题
一道题是说,让用户输入10个双精度数值,然后计算它们的平均数与标准差.
之后要把所有偏离平均值4个标准差以上的数值显示出来,并且,再进一步计算中将这些数值放弃,计算新的平均数与标准差.
编程计算平均值与标准差的一道题
你确定是4个标准差么...
以前我做东西的时候都是大于3个样本标准差.
#include
#include
#define N 10
#define K 3
double input[N];
double D,E;
void Calc ( int n )
{
D = E = 0;
for ( int i = 0; i < n; i++ )
{
E += input[i];
D += input[i] * input[i];
}
E = E / n;
D = D / n - E * E;
if ( D > 0 )
D = sqrt(D);
else
D = 0;
return;
}
int Filter( int n )
{
int tmp = n;
double d = K * D;
double k;
int modified = 0;
for ( int i = 0; i < tmp; i++ )
{
if ( fabs ( input[i] - E ) > d )
{
k = input[i];
input[i] = input[--tmp];
input[tmp] = k;
modified = 1;
printf ( "%lf\t",k );
}
}
printf ( "\n" );
return modified;
}
void Show( int n )
{
for ( int i = 0; i < n; i++ )
{
printf ( "%lf\t",input[i] );
}
printf ( "\n" );
}
void main()
{
int i;
for ( i = 0; i < N; i++ )
scanf ( "%lf",input+i );
i = N + 1;
do
{
i--;
Calc ( i );
Show ( i );
printf ( "E = %lf\tD = %lf\n范围:%lf %lf\n剔除:\t",E,D,E-K*D,E+K*D );
}while ( Filter ( i ) );
}