# include <iostream.h>
# include <math.h>
double detal_d()
{
double d1, d2;
cout<<"请输入实验数据:\n";
cin>>d1;
cin>>d2;
return fabs(d2-d1);
}
double equal(double * p, int n)
{
double s=0;
for(int i=0;i<n;i++)
s+=p[i];
double equal;
equal=s/n;
return equal;
}
double Sd(double * p, int n, double equal)
{
double Sd=0;
double c;
for(int i=0;i<n;i++)
{
c=(p[i]-equal)*(p[i]-equal);
Sd+=c;
}
Sd=Sd/(n-1);
Sd=sqrt(Sd);
return Sd;
}
double choose_t(int i)
{
double t;
switch (i)
{
case 2: t=9.0;
break;
case 3: t=2.5;
break;
case 4: t=1.6;
break;
case 5: t=1.2;
break;
case 6: t=1.05;
break;
case 7: t=0.93;
break;
case 8: t=0.84;
break;
case 9: t=0.77;
break;
case 10: t=0.72;
break;
case 15: t=0.55;
break;
case 20: t=0.47;
break;
case 30: t=0.37;
break;
default: t=0;
break;
}
return t;
}
double UA(double Sd, double t)
{
double UA;
UA=Sd*t;
return UA;
}
double UB()
{
double UB=0.00010;
return UB;
}
double U(double UA ,double UB)
{
double U;
U=UA*UA+UB*UB;
U=sqrt(U);
return U;
}
void display_p(double * p,int n)
{
for(int i=0;i<n;i++)
cout<<p[i]<<endl;
}
void main()
{
int n;
double t,a,b,e,s;
cout<<"请输入需要记录的实验数据组数:"<<endl;
cin>>n;
double * d=new double[n];
for(int i=0;i<n;i++)
d[i]=detal_d();
display_p(d,n);
e=equal(d,n);
s=Sd(d,n,e);
t=choose_t(n);
a=UA(s,t);
b=UB();
cout<<"t "<<t<<endl;
cout<<"equal "<<e<<endl;
cout<<"标准差"<<s<<endl;
cout<<"不确定度UA "<<a<<endl;
cout<<"不确定度UB "<<b<<endl;
cout<<"不确定度U "<<U(a,b)<<endl;
delete [] d;
}