📄 c
字号:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define N 36
#define X 10
#define exp 0.1
struct point{double x,y;};
double f(double,double,double,double,double,double,double*,double*);
void main()
{
int i=0,j,k,l=0,m=0,n=0;double s=0,sx=0,sy=0,ri,max,min,R;point p[N],temp,o[N/3];
FILE *pf;
pf=fopen("e:\\aaa.txt","r");
while(fscanf(pf,"%lf%lf\n",&p[i].x,&p[i].y)!=EOF) i++;/*数据的读入*/
for(i=0;i<35;i++)/*数据按圆周排序*/
{
k=i;
for(j=i+1;j<N;j++)
if(p[j].y<p[k].y)
k=j;
temp=p[k];p[k]=p[i];p[i]=temp;
}/*对y进行排序*/
for(i=0;i<(N/2-1);i++)
{
k=i;
for(j=i+1;j<N/2;j++)
if(p[j].x<p[k].x)
k=j;
temp=p[k];p[k]=p[i];p[i]=temp;
}/*对前半部分x进行排序*/
for(i=N/2;i<N;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(p[j].x>p[k].x)
k=j;
temp=p[k];p[k]=p[i];p[i]=temp;
}/*对后半部分x进行排序*/
for(i=0;i<N/3;i++)/*计算12个圆的圆心和它们的算术平均值*/
{
j=i+N/3;k=i+2*N/3;
f(p[i].x,p[i].y,p[j].x,p[j].y,p[k].x,p[k].y,&o[i].x,&o[i].y);
sx=sx+o[i].x;
sy=sy+o[i].y;
}
sx=3*sx/N;sy=3*sy/N;
ri=sqrt((p[0].x-sx)*(p[0].x-sx)+(p[0].y-sy)*(p[0].y-sy));
max=min=ri;
s=ri;
for(l=1;l<N;l++)/*检验*/
{
ri=sqrt((p[l].x-sx)*(p[l].x-sx)+(p[l].y-sy)*(p[l].y-sy));
if(ri>=X+exp||ri<=X-exp)
{printf("不合格\n"); exit(0);}
else
{
if(ri>max) {max=ri;m=l;}
if(ri<min) {min=ri;n=l;}
s=s+ri;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -