c语言编程粗大误差处理
#include
#include
#include
int i,N;
double a[20],v[20],c,a1,a2,a3,k,g,r,r1,r2;
void laiyite();
void roman();
void geluobusi();
void dikesong();
double average(double arr[],int m);
double bzhch(double arr1[],int m);
void kzhi(int n1);
void gzhi(int n2);
void rzhi(int n3,double arr[],int n);
void main()
{
int n,w;
printf("\n*****************************粗大误差处理****************************\n\n");
printf("请输入数据个数: ");
scanf("%d",&N);
printf("\n请?输?入?数簓据Y: ");
for(i=0;i
scanf("%lf",&a[i]);
S:{
printf("\n\n***************************菜单**************************\n");
printf("\t\t\t1.莱以特准则\n\t\t\t2.罗曼洛夫斯基准则ò\n\t\t\t3.格罗布斯准则\n\t\t\t4.狄克松准则\n");
printf("**********************************************************\n");
printf("\n请选择判别的准则: [ ]\b\b");
scanf("%d",&n);
switch(n)
{
case 1: laiyite();break;
case 2: roman();break;
case 3: geluobusi();break;
case 4: dikesong();break;
}
printf("\n\n要继续吗\t1.继续 2.退出? [ ]\b\b");
scanf("%d",&w);
switch(w)
{
case 1: goto S;break;
case 2:break;
}
}
}
void laiyite() //1.莱以特准则
{
double b;
L1:{
c=average(a,N);
b=bzhch(a,N);
for(i=0;i
v[i]=a[i]-c;
for(i=0;i
{
v[i]=abs(v[i]);
if(v[i]>3*b)
{
printf("\n剔除值残余误差: %8.3lf 剔除值 %8.3lf\n",v[i],a[i]);
for(;i
a[i]=a[i+1];
a[N-1]='\0';
N--;
goto L1;
}
}
}
printf("\n标准差: %8.3lf \n",b);
printf("\n输出最后数值: ");
for(i=0;i
printf("%8.3lf ",a[i]);
}
void roman() //2.罗曼洛夫斯基准则
{
double t=100,x[20],b,ave,b2,sum=0,s2;
int d;
printf("\n请?输?入?显?著?度è:阰 ");
scanf("%lf",&a1);
for(i=0;i
x[i]=a[i];
L2:{
kzhi(N);
for(i=0;i
{
if(x[i]
{
t=x[i];
d=i;
}
}
for(i=d;i
x[i]=x[i+1];
x[N-1]='\0';
ave=average(x,N-1);
b2=bzhch(x,N-2);
if(abs(t-ave)>k*b2)
{
printf("\n输出k值:阰 %lf\n ",k);
printf("\n剔除值: %8.3lf\n",t);
printf("\n输出最后数值:阰 ");
for(i=0;i
printf("%8.3lf ",x[i]);
N--;
t=100;
goto L2;
}
}
}
void geluobusi() //3.格罗布斯准则
{
int d1,d2;
double min=100,max=0,ave1,b3,g1,g2,x[20];
printf("\n请输入显著度: ");
scanf("%lf",&a
2);
for(i=0;i
x[i]=a[i];
L3:{
ave1=average(x,N);
b3=bzhch(x,N-1);
for(i=0;i
{
if(x[i]
{
min=x[i];
d1=i;
如果觉得《判断粗大误差的matlab程序 粗大误差处理程序》对你有帮助,请点赞、收藏,并留下你的观点哦!