www.pudn.com > Wrough.rar > XC.C


#include "stdio.h" 
#include "math.h" 
#include "alloc.h" 
#include "conio.h" 
#include "graphics.h" 
#include "dos.h" 
#define SNO 1792 
#define PVNUM 600 
#define mx0 2 
#define mxn 637 
#define my0 40 
#define myn 477 
/*-----------------------------------------------------------------------*/ 
int ib(int j,int n); 
float w_fmax(float *p,int p0,int n); 
float w_fmin(float *p,int p0,int n); 
float w_fc(float *a,float avg,int a0,int n); 
float w_av(float *a,int a0,int n); 
void w_qs(float *item,int left,int right); 
void w_od(float *p,int x,int y,int n); 
void gbf(); 
void pcf(); 
void mean(); 
void w_1724p(void); 
void prt_block(int y1,int x1,int y2,int x2,int yinc, int xinc,int reverse); 
int ib(int j,int n); 
void w_fft(float *xr,float *xi,int n,int nu); 
void w_gsf(float *xr,int n,int nu); 
void dc_gsf(float *y,int n0,int n); 
void rr(int sadr); 
void w_spv(float *a,float *p,float *v,int *pn,int *vn,int a0,int an); 
void w_s(float *p,float *v,int *pn,int *vn,int pnu); 
void w_sm(float *a,float *p,float *v,int *pn,int *vn,int pnu,int vnu); 
void c_s_sm(float *pp); 
void rhsc(int *eh); 
void rpc(int *pc,float *ma); 
void w_tp(float *tp,float *c,float *adf); 
void w_rzy(float *a); 
void w_prt(void); 
void w_1724p(void); 
void gtpa(int dy); 
void gdis(int dy); 
void disresult(int dy); 
void disstat(int dy); 
void cpat( int bb); 
/*-----------------------------------------------------------------------*/ 
extern char mu[2],enumber[16],name[16],oper[16]; 
extern int pc[27],eh[27];    /* pc;hsc calculate arrey */ 
extern int mdx,mdy;          /* menu x,y */ 
extern int efa;              /* efa=256;0*/ 
extern int tpb;              /* tpb=0 calculate tp,tpb=99 nocalculate  */ 
extern int ek;               /*  statistical analysis counter */ 
extern int elnu;             /* 1,2,3,4,5 */ 
extern int evv;              /* 4 mu,20 mu,100 mu,500 mu */ 
extern int c5;               /* c5=tp%5 y*/ 
extern float ecl;            /* cut-off=0.08,0.25,0,8,2,5,8 */ 
extern int fs,mf;      /* fs=0:UF,1:GB,2:PC,3:GS,  mf=4:Contine,5:Single  */ 
extern long int vv;          /* auto */ 
extern int vvk;              /* 0,1,2,3,4,5,6,7,8,9,10 */ 
extern int vh,vhk;           /* 7777:auto,0,1,2,3,4,5,6,7,8,9 */ 
extern int ex[SNO],pc[27],eh[27];       /* sample data */ 
extern unsigned int est; 
extern float ey[SNO+256];       /* filter data  */ 
extern float ma[26]; 
extern float sta[400];                /*  statistical analysis      */ 
extern int eln;             /* sample number eln= 256 */ 
extern int epn,evn;         /* 存峰谷数 */ 
extern ek;                  /* statics counter */ 
extern float tp[101],c[101],adf[101];     /*Tp曲线数据 幅度分布曲线数据*/ 
extern float r10,evc;           /* evc=2/2048;10/2048;25/2048;250/2048 */ 
extern float ra,rq,da,dq,la,lq,rsk,rku,rp,rv,s,sm,rtm,rpm,rvm,rt; 
extern float rz,r3y,r3z,ry;               /*参数结果*/ 
extern char mu[2]; 
/*-----------------------------------------------------------------------*/ 
float w_fmax(float *p,int p0,int n)       /* 浮点数求最大值 */ 
{ float max; 
  register int i; 
  max=p[p0];for(i=p0+1;ip[i]) min=p[i]; } return(min); 
} 
int imax(int *p,int p0,int n)       /* 浮点数求最大值 */ 
{ int max; 
  register int i; 
  max=p[p0];for(i=p0+1;ip[i]) min=p[i]; } return(min); 
} 
void w_qs(float *item,int left,int right) 
{ register int i,j; 
  float x,y; 
  i=left;j=right; x=item[(left+right)/2]; 
  do { while (item[i]left) j--; 
       if(i<=j) { y=item[i];item[i]=item[j];item[j]=y;i++;j--; } 
     } 
  while(i<=j);if(left=an) return;goto sq;} 
	if(i>=an) return; 
	if(a[i]a[i+2]) 
			{p[epn]=a[i+1];pn[epn]=i+1;epn++;if(++i>=an) return;goto v1;} 
			else {if(++i>=an) return;goto p1;} 
	  } 
	else {v1:if(a[i+1]=an) return;goto p1;} 
			 else {if(++i>=an) return;goto v1;} 
	     } 
} 
/*-----------------------------------------------------------------------*/ 
void w_sspv(float *a,float *p,float *v,int a0,int an) 
{ register int i; 
  int pj=0,vj=0; 
  float max=0,min=0; 
  epn=0;evn=0;i=a0;an=an-1; 
  sq:if((a[i]<=0)&&(a[i+1]>0)) goto pfirst; 
     if((a[i]>=0)&&(a[i+1]<0)) goto vfirst; 
     if(i++>=an) goto end;else goto sq; 
  pfirst:if(a[i]>max) max=a[i];             /* select signle peak */ 
	 if(i++>=an) goto end; 
	 if(a[i]<=0) { p[pj]=max;epn++;pj++;} 
	    else goto pfirst; 
      sv:if(a[i]=an) goto end; 
	 if(a[i]>=0) { v[vj]=min;evn++;vj++;goto pfirst;} 
	     else goto sv; 
  vfirst:if(a[i]=an) goto end; 
	 if(a[i]>=0) { v[vj]=min;evn++;vj++;} 
	    else goto vfirst; 
      sp:if(a[i]>max) max=a[i];             /* select signle peak */ 
	 if(i++>=an) goto end; 
	 if(a[i]<=0) { p[pj]=max;epn++;pj++;goto vfirst;} 
	    else goto sp; 
  end:return; 
} 
/*-----------------------------------------------------------------------*/ 
void w_rzy(float *a) 
{register int i,j; 
 float rpt[5],rvt[5],rtt[5],r3yt[5],r3zt[5],z1,z2; 
 float *p,*v; 
 int *pn,*vn,j1; 
 p=(float*)farcalloc(PVNUM,4);if(!p) {puts("PP Error!!");exit(1);} 
 v=(float*)farcalloc(PVNUM,4);if(!v) {puts("VV Error!!");exit(1);} 
 pn=(int*)farcalloc(PVNUM,2);if(!p) {puts("PN Error!!");exit(1);} 
 vn=(int*)farcalloc(PVNUM,2);if(!v) {puts("VN Error!!");exit(1);} 
 rtm=0;rpm=0;rvm=0;r3z=0;rz=0;j=elnu;j1=elnu; 
 for(i=0;i=r10) {l0=pn[0];kp=1;} else spn--;t=1;} 
 else t=0; 
 begin:j=i; 
       vv:if((p[t]-v[j])>=(p[t]-v[i+1])) 
	     { if(fabs(p[t]-v[i+1])=0)&&(*p<0))||((a[m]<=0)&&(*p>0)))  z++; 
  while(1)          /*峰先*/ 
  {if(*p>0) 
	{l1:if(*v>0) {p++;v++;pni--;if(--vni<=0) break;else goto l1;} 
		else { z++;p++;} 
	 l2:if(--pni<=0) break; 
		if(*p<0) { p++;v++;vni--;goto l2;} else { z++;v++; } 
		if(--vni<=0) break;else goto l1; 
	} 
   else { l3:p++;v++;vni--;if(--pni<=0) break; 
		  if(*p<0) goto l3;else { z++;goto l1; } 
        } 
  } 
  if(pn[pnu-1]>vn[vnu-1]) 
    {if(((a[j1]>=0)&&(p[pnu-1]<0))||((a[j1]<=0)&&(p[pnu-1]>0))) z++;} 
  else {if(((a[j1]>=0)&&(v[vnu-1]<0))||((a[j1]<=0)&&(v[vnu-1]>0))) z++;} 
 } 
 else 
  {if(((a[m]>=0)&&(*v<0))||((a[m]<=0)&&(*v>0))) z++;}   /*谷先*/ 
	while(1) 
	 {if(*v<0) 
		{l4:if(*p<0) {p++;v++;vni--;if(--pni<=0) break;else goto l4;} 
			else { z++;v++; } 
		 l5:if(--vni<=0) break; 
			if(*v>0) {p++;v++;pni--;goto l5;} else {z++;p++;} 
			if(--pni<=0) break; else goto l4; 
		} 
	  else {l6:v++;p++;pni--;if(--vni<=0) break; 
			   if(*v>0) goto l6;else { z++;goto l4; } 
		   } 
	 } 
  if(pn[pnu-1]>vn[vnu-1]) 
   {if(((a[j1]>=0)&&(p[pnu-1]<0))||((a[j1]<=0)&&(p[pnu-1]>0))) z++;} 
   else {if(((a[j1]>=0)&&(v[vnu-1]<0))||((a[j1]<=0)&&(v[vnu-1]>0))) z++;} 
/*求第一个过零点lo,最后过零点ln*/ 
 for(i=efa;i=0)&&(a[i+1]<0))||((a[i]<=0)&&(a[i+1]>0))) 
  {n1:l0=i; 
   if((z%2)!=0) 
     { n2:if(((a[j1]>=0)&&(a[j1-1]<0))||((a[j1]<=0)&&(a[j1-1]>0))) 
		   {ln=j1;break;} 
	  else { j1--;if(--z1<=0) break;else goto n2;} 
     } 
   else { n4:if(((a[j1]<=0)&&(a[j1-1]>0))||((a[j1]>=0)&&(a[j1-1]<0))) 
	       { j1--;if(--z1<=0) break; 
		 n5:if(((a[j1]<=0)&&(a[j1-1]>0))||((a[j1]>=0)&&(a[j1-1]<0))) 
		      { ln=j1;break;} 
		    else { j1--;if(--z1<=0) break;goto n5; } 
	       } 
	      else { j1--;if(--z1<=0) break;goto n4; } 
	} 
  } 
 } 
 if(l0>(eln+efa)||(lnc) hn++;} 
	for(j=0;jc) hn--;} 
	if(hn<0) hn=0; 
	eh[n]=hn;n++; 
  } 
re:farfree(p);farfree(v);farfree(pn);farfree(vn); 
} 
/*-----------------------------------------------------------------------*/ 
void rpc(int *pc,float *ma) 
{ register int i,j; 
  int k,k0,pni,vni,n,n1,q; 
  float ub,lb,max; 
  float *p,*v; 
  int *pn,*vn; 
  p=(float*)farcalloc(PVNUM,4);if(!p) {puts("PP Error!!");exit(1);} 
  v=(float*)farcalloc(PVNUM,4);if(!v) {puts("VV Error!!");exit(1);} 
  pn=(int*)farcalloc(PVNUM,2);if(!pn) {puts("PN Error!!");exit(1);} 
  vn=(int*)farcalloc(PVNUM,2);if(!vn) {puts("VN4Error!!");exit(1);} 
  w_spv(ey,p,v,pn,vn,efa,eln*(elnu+efa/256)); 
  if((epn<2)&&(evn<2)) goto re; 
  max=rp;n=1;n1=0;pc[0]=0; 
  if(pn[0]>vn[0])  k0=1;else k0=0; 
	for(q=0;q<=50;q++)       /*q+=2*/ 
	  { ub=max*(50-q)/50;lb=-ub;ma[n1]=fabs(2*ub);n1++; 
		pc[n]=0;pni=epn;vni=evn;i=0;j=k0;k=0; 
		l1:if(p[i]<=ub) { i++;j++;vni--;if(--pni>0) goto l1;goto l3;} 
		l2:if(v[j]>=lb) { i++;j++;pni--;if(--vni>0) goto l2;goto l3;} 
		   k++;if(--pni>0) { i++;j++;goto l1;} 
		l3:pc[n]=k;n++; 
	  } 
re:farfree(p);farfree(v);farfree(pn);farfree(vn); 
} 
/*-----------------------------------------------------------------------*/ 
void disresult(int dy) 
{register int i,j; 
 char ps[50],dd[2],dd1[2]; 
 unsigned char *hs[]={"λ"}; 
 setfillstyle(SOLID_FILL,0);bar(mx0+1,my0+25,mxn-1,myn-53); 
 setcolor(15);dd[1]='\0';dd[0]=127;dd1[1]='\0';dd1[0]=248; 
 if(evv==4) 
  { sprintf(ps,"Ra = %6.3f",evc*ra);outtextxy(35,my0+80,ps); 
    if(rz==0)  outtextxy(185,my0+80,"Rz = "); 
     else { sprintf(ps,"Rz = %6.3f",evc*rz);outtextxy(185,my0+80,ps);} 
    sprintf(ps,"Ry = %6.3f",evc*ry);outtextxy(335,my0+80,ps); 
    sprintf(ps,"Rq = %6.3f",evc*rq);outtextxy(485,my0+80,ps); 
    sprintf(ps,"Rt = %6.3f",evc*rt);outtextxy(35,my0+130,ps); 
    sprintf(ps,"Rtm= %6.3f",evc*rtm);outtextxy(185,my0+130,ps); 
    sprintf(ps,"Rp = %6.3f",evc*rp);outtextxy(35,my0+180,ps); 
    sprintf(ps,"Rpm= %6.3f",evc*rpm);outtextxy(185,my0+180,ps); 
    sprintf(ps,"Rv = %6.3f",evc*rv);outtextxy(335,my0+180,ps); 
    sprintf(ps,"Rvm= %6.3f",evc*rvm);outtextxy(485,my0+180,ps); 
    sprintf(ps,"R3y= %6.3f",evc*r3y);outtextxy(35,my0+230,ps); 
   sprintf(ps,"R3z= %6.3f",evc*r3z);outtextxy(185,my0+230,ps); 
  } 
 if((evv==16)||(evv==64)) 
  { sprintf(ps,"Ra = %6.2f",evc*ra);outtextxy(35,my0+80,ps); 
    if(rz==0)  outtextxy(185,my0+80,"Rz = "); 
     else { sprintf(ps,"Rz = %6.2f",evc*rz);outtextxy(185,my0+80,ps);} 
    sprintf(ps,"Ry = %6.2f",evc*ry);outtextxy(335,my0+80,ps); 
    sprintf(ps,"Rq = %6.2f",evc*rq);outtextxy(485,my0+80,ps); 
    sprintf(ps,"Rt = %6.2f",evc*rt);outtextxy(35,my0+130,ps); 
    sprintf(ps,"Rtm= %6.2f",evc*rtm);outtextxy(185,my0+130,ps); 
    sprintf(ps,"Rp = %6.2f",evc*rp);outtextxy(35,my0+180,ps); 
    sprintf(ps,"Rpm= %6.2f",evc*rpm);outtextxy(185,my0+180,ps); 
    sprintf(ps,"Rv = %6.2f",evc*rv);outtextxy(335,my0+180,ps); 
    sprintf(ps,"Rvm= %6.2f",evc*rvm);outtextxy(485,my0+180,ps); 
    sprintf(ps,"R3y= %6.2f",evc*r3y);outtextxy(35,my0+230,ps); 
    sprintf(ps,"R3z= %6.2f",evc*r3z);outtextxy(185,my0+230,ps); 
  } 
 if(evv==256) 
  { sprintf(ps,"Ra = %6.1f",evc*ra);outtextxy(35,my0+80,ps); 
    if(rz==0)  outtextxy(185,my0+80,"Rz = "); 
     else { sprintf(ps,"Rz = %6.1f",evc*rz);outtextxy(185,my0+80,ps);} 
    sprintf(ps,"Ry = %6.1f",evc*ry);outtextxy(335,my0+80,ps); 
    sprintf(ps,"Rq = %6.1f",evc*rq);outtextxy(485,my0+80,ps); 
    sprintf(ps,"Rt = %6.1f",evc*rt);outtextxy(35,my0+130,ps); 
    sprintf(ps,"Rtm= %6.1f",evc*rtm);outtextxy(185,my0+130,ps); 
    sprintf(ps,"Rp = %6.1f",evc*rp);outtextxy(35,my0+180,ps); 
    sprintf(ps,"Rpm= %6.1f",evc*rpm);outtextxy(185,my0+180,ps); 
    sprintf(ps,"Rv = %6.1f",evc*rv);outtextxy(335,my0+180,ps); 
    sprintf(ps,"Rvm= %6.1f",evc*rvm);outtextxy(485,my0+180,ps); 
    sprintf(ps,"R3y= %6.1f",evc*r3y);outtextxy(35,my0+230,ps); 
    sprintf(ps,"R3z= %6.1f",evc*r3z);outtextxy(185,my0+230,ps); 
  } 
 if(sm==0)  { outtextxy(335,my0+130,"Sm = ");outtextxy(485,my0+130,"S  =  ");} 
  else { sprintf(ps,"Sm = %4d",(int)sm);outtextxy(335,my0+130,ps); 
	 sprintf(ps,"S  = %4d",(int)s);outtextxy(485,my0+130,ps); 
       } 
 w_hz16(328,my0+225,0,15,hs[0]);outtextxy(343,my0+230,"a = "); 
 sprintf(ps,"%6.2f",la);outtextxy(375,my0+230,ps); 
 w_hz16(478,my0+225,0,15,hs[0]);outtextxy(493,my0+230,"q = "); 
 sprintf(ps,"%6.2f",la);outtextxy(525,my0+230,ps); 
 for(i=my0+80;i<=my0+230;i+=50) 
   for(j=135;j<=585;j+=150) { outtextxy(j,i,mu);outtextxy(j+10,i,"m");} 
 outtextxy(35,my0+280,dd);sprintf(ps,"a = %6.2f",da); 
 outtextxy(45,my0+280,ps);outtextxy(135,my0+280,dd1); 
 outtextxy(185,my0+280,dd);sprintf(ps,"q = %6.2f",dq); 
 outtextxy(195,my0+280,ps);outtextxy(285,my0+280,dd1); 
 sprintf(ps,"Sk= %7.2f",rsk);outtextxy(335,my0+280,ps); 
 sprintf(ps,"Rku= %7.2f",rku);outtextxy(485,my0+280,ps); 
 setcolor(7);line(2,myn-92,637,myn-92);line(2,myn-72,637,myn-72); 
 if(tpb==0) { w_tp(tp,c,adf);tpb=99;} 
 outtextxy(10,myn-85,"C%");outtextxy(10,myn-65,"Tp%");j=5; 
 for(i=40;i<640;i+=50) 
  { line(i,myn-92,i,myn-52);sprintf(ps,"%3d",j);outtextxy(i+10,myn-85,ps); 
    sprintf(ps,"%4.1f",100*tp[j]);outtextxy(i+7,myn-65,ps); 
    if(j<30) j+=5;else j+=10; 
  } 
  while(1) 
   { switch(bkey()) 
      { case 'n': 
	case 'N':disstat(dy);return; 
	case 'p': 
	case 'P':prt_block(0,0,455,639,2,2,0);break;  /* 455=479*/ 
	case 27:retm(dy);return; 
	default:break; 
      } 
   } 
} 
/*-----------------------------------------------------------------------*/ 
void disstat(int dy) 
{int i,j,k; 
 float de; 
 char ps[50],dd[2],dd1[2]; 
 unsigned char *hs[]={"参数","方差","平均值","最大值","最小值","本次值","λ"}; 
 unsigned char *ee[]={"Ra","Rq","Ry","Rz","Rt","Rp","Rv","Rtm","R3y","R3z"}; 
 dd[0]=127;dd[1]='\0';dd1[1]='\0';dd1[0]=248; 
 setfillstyle(SOLID_FILL,0);bar(mx0+1,my0+25,mxn-1,myn-53); 
 if(ek<=1) { retm(dy);return;} 
 setcolor(3);line(2,my0+48,637,my0+48); 
 w_hz16(40,my0+28,0,11,hs[0]); 
 sprintf(ps,"(%2d)",ek);outtextxy(607,my0+35,ps); 
 for(i=110,j=1;i<=534;i+=106,j++) 
  { line(i,my0+24,i,myn-52); 
    if(i==110) k=i+10;else k=i;w_hz16(k+25,my0+28,0,11,hs[j]); 
  } 
 for(i=0,j=my0+60;i<10;i++,j+=18)  outtextxy(30,j,ee[i]); 
 w_hz16(25,275,0,11,hs[6]);outtextxy(40,280,"a"); 
 w_hz16(25,293,0,11,hs[6]);outtextxy(40,298,"q"); 
 outtextxy(30,316,"Sm");outtextxy(30,334,"S "); 
 outtextxy(30,352,"Sk");outtextxy(30,370,"Rku"); 
 outtextxy(30,388,dd);outtextxy(40,388,"a");outtextxy(70,388,dd1); 
 outtextxy(30,406,dd);outtextxy(40,406,"q");outtextxy(70,406,dd1); 
 for(i=my0+60;i<=334;i+=18)  { outtextxy(70,i,mu);outtextxy(80,i,"m"); } 
 for(i=0,j=0,k=my0+60;i<18;i++,j+=20,k+=18) 
  { if(evv==4) 
     { de=w_av(sta,j,ek);sprintf(ps,"%6.3f",w_fc(sta,de,j,ek)); 
       outtextxy(135,k,ps);sprintf(ps,"%6.3f",de);outtextxy(241,k,ps); 
       sprintf(ps,"%6.3f",w_fmax(sta,j,ek));outtextxy(348,k,ps); 
       sprintf(ps,"%6.3f",w_fmin(sta,j,ek));outtextxy(453,k,ps); 
       sprintf(ps,"%6.3f",sta[j+19]);outtextxy(559,k,ps); 
     } 
    if((evv==16)||(evv==64)) 
     { de=w_av(sta,j,ek);sprintf(ps,"%6.2f",w_fc(sta,de,j,ek)); 
       outtextxy(135,k,ps);sprintf(ps,"%6.2f",de);outtextxy(241,k,ps); 
       sprintf(ps,"%6.2f",w_fmax(sta,j,ek));outtextxy(348,k,ps); 
       sprintf(ps,"%6.2f",w_fmin(sta,j,ek));outtextxy(453,k,ps); 
       sprintf(ps,"%6.2f",sta[j+19]);outtextxy(559,k,ps); 
     } 
    if(evv==256) 
     { de=w_av(sta,j,ek);sprintf(ps,"%6.2f",w_fc(sta,de,j,ek)); 
       outtextxy(135,k,ps);sprintf(ps,"%6.2f",de);outtextxy(241,k,ps); 
       sprintf(ps,"%6.1f",w_fmax(sta,j,ek));outtextxy(348,k,ps); 
       sprintf(ps,"%6.1f",w_fmin(sta,j,ek));outtextxy(453,k,ps); 
       sprintf(ps,"%6.1f",sta[j+19]);outtextxy(559,k,ps); 
     } 
 } 
   while(1) 
    { switch(bkey()) 
      { case 'n': 
	case 'N':gdis(dy);return; 
	case 'p': 
	case 'P':prt_block(0,0,455,639,2,2,0);break;/* 455=479*/ 
	case 27:retm(dy);return; 
	default:break; 
      } 
    } 
} 
/*-----------------------------------------------------------------------*/ 
 
void gdis(int dy) 
{ register int i,j; 
  int st0=0,stn=255,n=1; 
  char ps[40]; 
  unsigned char *hs[]={"轮廓图形"}; 
  setfillstyle(SOLID_FILL,0);bar(mx0+1,my0+25,mxn-1,myn-53); 
  setcolor(12);setfillstyle(SOLID_FILL,11); 
   w_hz16(280,my0+60,16,11,hs[0]); 
  for(i=st0+efa,j=94;i120) 
		{ y1-=4;i1-=2;de=(rt*i1)/100;he=rt/2-de;j--;} 
	      if(y2>120) { y2-=2;y3+=2;k--;} 
	      if(x1>62) { x1-=4;i-=2;} 
	      putchar(7);gtp1(i,j,k,x1,y1,y2,y3,de,he);break; 
      case 80:if(y1<320) 
		{ y1+=4;i1+=2;de=(rt*i1)/100;he=rt/2-de;j++;} 
	      if(y2<220) { y2+=2;y3-=2;k++;} 
	      if(x1<256) { x1+=4;i+=2;} 
	      putchar(7);gtp1(i,j,k,x1,y1,y2,y3,de,he);break; 
      case 'p':prt_block(0,0,455,639,2,2,0);break;/* 455=479*/ 
      case 27 :retm(dy);return; 
      case 'N': 
      case 'n':/* 
	       if((elnu==5)&&(evv==20)&&(((int)(ecl*10)==8)||((int)(ecl*10)==25))) 
		  gtp5(dy); 
	       else disresult(dy);*/ 
	       disresult(dy);return; 
      default:break; 
    } 
 } 
} 
/*-----------------------------------------------------------------------*/ 
void w_prt(void) 
{ char ps[20]; 
  struct date today; 
  getdate(&today); 
  if(fs==0) strcpy(ps,"UN");if(fs==1) strcpy(ps,"ISO "); 
  if(fs==2) strcpy(ps,"PC");if(fs==3) strcpy(ps,"G S"); 
  fprintf(stdprn,"\n-------------------------------------------------------------------------"); 
  fprintf(stdprn,"\n| No:%-10s| Name:%-10s|Operator:%-10s| Date:%4d.%3d.%3d |",enumber,name,oper,today.da_year,today.da_mon,today.da_day); 
  fprintf(stdprn,"\n|-----------------------------------------------------------------------|"); 
  fprintf(stdprn,"\n|                                                                       |"); 
  if(evv==4) 
     { if(rz==0) fprintf(stdprn,"\n|     Ra=%6.3f   ym          Rz=         ym          Sk=%6.3f          |",evc*ra,rsk); 
       else  fprintf(stdprn,"\n|     Ra=%6.3f   ym          Rz=%6.3f   ym         Sk=%6.3f  ym      |",evc*ra,evc*rz,rsk); 
     } 
  if((evv==16)||(evv==64)) 
   { if(rz==0) fprintf(stdprn,"\n|     Ra=%6.2f   ym          Rz=         ym         Sk=%6.2f  ym      |",evc*ra,rsk); 
     else  fprintf(stdprn,"\n|     Ra=%6.2f   ym          Rz=%6.2f   ym         Sk=%6.2f  ym      |",evc*ra,evc*rz,rsk); 
   } 
  if(evv==256) 
     { if(rz==0) fprintf(stdprn,"\n|     Ra=%6.1f   ym          Rz=         ym         Sk=%6.1f  ym      |",evc*ra,rsk); 
       else  fprintf(stdprn,"\n|     Ra=%6.1f   ym          Rz=%6.1f   ym         Sk=%6.1f  ym      |",evc*ra,evc*rz,rsk); 
     } 
  fprintf(stdprn,"\n|                                                                       |"); 
  if(evv==4) 
    { if(sm==0) fprintf(stdprn,"\n|     Ry=%6.3f   ym          S =         ym          Sm=       ym      |",evc*ry); 
      else fprintf(stdprn,"\n|     Ry=%6.3f   ym          S =%6d   ym         Sm=%6d  ym      |",evc*ry,(int)s,(int)sm); 
    } 
  if((evv==16)||(evv==64)) 
    { if(sm==0) fprintf(stdprn,"\n|     Ry=%6.2f   ym          S =         ym          Sm=       ym      |",evc*ry); 
      else fprintf(stdprn,"\n|     Ry=%6.2f   ym          S =%6d   ym         Sm=%6d  ym      |",evc*ry,(int)s,(int)sm); 
    } 
  if(evv==256) 
    { if(sm==0) fprintf(stdprn,"\n|     Ry=%6.2f   ym          S =         ym          Sm=       ym      |",evc*ry); 
      else fprintf(stdprn,"\n|     Ry=%6.1f   ym          S =%6d   ym         Sm=%6d  ym      |",evc*ry,(int)s,(int)sm); 
    } 
  fprintf(stdprn,"\n|                                                                       |"); 
  fprintf(stdprn,"\n|-----------------------------------------------------------------------|"); 
  fprintf(stdprn,"\n| Filter:%-11s  |      L: %3.2fmm *%2d       |    Range: %3d  ym    |",ps,ecl,elnu,evv); 
  fprintf(stdprn,"\n-------------------------------------------------------------------------\n\n\n"); 
} 
void w_prk(void)  /*   1600k print  */ 
{ char ps[20]; 
  struct date today; 
  getdate(&today); 
  if(fs==0) strcpy(ps,"非滤波");if(fs==1) strcpy(ps,"国  标"); 
  if(fs==2) strcpy(ps,"相位校正");if(fs==3) strcpy(ps,"高  斯"); 
  fprintf(stdprn,"\n-------------------------------------------------------------------------------"); 
  fprintf(stdprn,"\n| 编  号:%-10s| 工件名:%-10s|操作者:%-10s| 日  期:%4d.%3d.%3d |",enumber,name,oper,today.da_year,today.da_mon,today.da_day); 
  fprintf(stdprn,"\n|-----------------------------------------------------------------------------|"); 
  fprintf(stdprn,"\n|                                                                             |"); 
  if(evv==4) 
     { if(rz==0) fprintf(stdprn,"\n|     Ra=%7.3f   μm          Rz=         μm          Sk=%6.3f          |",evc*ra,rsk); 
       else  fprintf(stdprn,"\n|     Ra=%6.3f   μm          Rz=%6.3f   μm         Sk=%6.3f  μm      |",evc*ra,evc*rz,rsk); 
     } 
  if((evv==16)||(evv==64)) 
   { if(rz==0) fprintf(stdprn,"\n|     Ra=%7.2f   μm          Rz=         μm         Sk=%7.2f        |",evc*ra,rsk); 
     else  fprintf(stdprn,"\n|     Ra=%7.2f   μm          Rz=%7.2f   μm         Sk=%8.2f        |",evc*ra,evc*rz,rsk); 
   } 
  if(evv==256) 
     { if(rz==0) fprintf(stdprn,"\n|     Ra=%8.1f   μm          Rz=         μm         Sk=%6.1f        |",evc*ra,rsk); 
       else  fprintf(stdprn,"\n|     Ra=%8.1f   μm          Rz=%8.1f   μm         Sk=%8.1f      |",evc*ra,evc*rz,rsk); 
     } 
  fprintf(stdprn,"\n|                                                                             |"); 
  if(evv==4) 
    { if(sm==0) fprintf(stdprn,"\n|     Ry=%6.3f   μm          S =         μm          Sm=       μm      |",evc*ry); 
      else fprintf(stdprn,"\n|     Ry=%6.3f   μm          S =%6d   μm         Sm=%6d  μm      |",evc*ry,(int)s,(int)sm); 
    } 
  if((evv==16)||(evv==64)) 
    { if(sm==0) fprintf(stdprn,"\n|     Ry=%6.2f   μm          S =         μm          Sm=       μm      |",evc*ry); 
      else fprintf(stdprn,"\n|     Ry=%6.2f   μm          S =%6d   μm         Sm=%6d  μm      |",evc*ry,(int)s,(int)sm); 
    } 
  if(evv==256) 
    { if(sm==0) fprintf(stdprn,"\n|     Ry=%6.2f   μm          S =         μm          Sm=       μm      |",evc*ry); 
      else fprintf(stdprn,"\n|     Ry=%6.1f   μm          S =%6d     μm       Sm=%6d  μm      |",evc*ry,(int)s,(int)sm); 
    } 
  fprintf(stdprn,"\n|                                                                             |"); 
  fprintf(stdprn,"\n|-----------------------------------------------------------------------------|"); 
  fprintf(stdprn,"\n| 滤波器:%-11s  |      评定长度: %3.2fmm *%2d       | 测量范围: %3d  μm |",ps,ecl,elnu,evv); 
  fprintf(stdprn,"\n-------------------------------------------------------------------------------\n\n\n"); 
} 
/*-----------------------------------------------------------------------*/ 
void w_pre(int rhbz) 
{ char ps[100]; 
  int i,k; 
  unsigned char *hs[]={"打印","返回","删除本次统计数据","统计数据已经删除"}; 
  mwd(100,200,440,150,3,12);setcolor(15); 
  if(evv==4) 
   { sprintf(ps,"Ra = %5.3f",evc*ra);outtextxy(130,230,ps); 
     if(rz==0) outtextxy(270,230,"Rz =  "); 
     else { sprintf(ps,"Rz = %5.3f",evc*rz);outtextxy(270,230,ps); } 
     sprintf(ps,"Sk = %5.3f",rsk);outtextxy(410,230,ps); 
     sprintf(ps,"Ry = %5.3f",evc*ry);outtextxy(130,270,ps); 
   } 
  if((evv==16)||(evv==64)) 
   { sprintf(ps,"Ra = %5.2f",evc*ra);outtextxy(130,230,ps); 
     if(rz==0) outtextxy(270,230,"Rz =  "); 
     else { sprintf(ps,"Rz = %5.3f",evc*rz);outtextxy(270,230,ps); } 
     sprintf(ps,"Sk = %5.2f",rsk);outtextxy(410,230,ps); 
     sprintf(ps,"Ry = %5.2f",evc*ry);outtextxy(130,270,ps); 
   } 
  if(evv==256) 
   { sprintf(ps,"Ra = %5.1f",evc*ra);outtextxy(130,230,ps); 
     if(rz==0) outtextxy(270,230,"Rz =  "); 
     else { sprintf(ps,"Rz = %5.3f",evc*rz);outtextxy(270,230,ps); } 
     sprintf(ps,"Sk = %5.1f",rsk);outtextxy(410,230,ps); 
     sprintf(ps,"Ry = %5.1f",evc*ry);outtextxy(130,270,ps); 
   } 
  if(s==0) outtextxy(270,270,"S   =  "); 
    else { sprintf(ps,"S  = %4d",(int)s);outtextxy(270,270,ps);} 
  if(sm==0) outtextxy(410,270,"Sm   =  "); 
   else { sprintf(ps,"Sm = %4d",(int)sm);outtextxy(410,270,ps);} 
  for(i=0,k=220;i<3;i++,k+=140) 
   { outtextxy(k,230,mu);outtextxy(k+10,230,"m"); 
     outtextxy(k,270,mu);outtextxy(k+10,270,"m"); 
   } bar(500,230,520,250); 
  setcolor(14);outtextxy(140,320,"P:");w_hz16(165,315,0,15,hs[0]); 
  outtextxy(220,320,"ESC:");w_hz16(270,315,0,15,hs[1]); 
  outtextxy(340,320,"D:");w_hz16(365,315,0,15,hs[2]); 
  if(ek>=18) ek=0; 
  ek++; 
  if(rhbz==99) {if(mf==5) dreturn();}      /* pick up auto return */ 
  while(1) 
   { switch(bkey()) 
    { case 'D': 
      case 'd':ek--;putch(7);putch(7);w_hz16(250,290,0,0,hs[3]);break; 
      case 'P': 
      case 'p':w_prk();break; 
      case 27 : mwd(100,200,440,150,1,1);return; 
      default:break; 
    } 
   } 
} 
/*-----------------------------------------------------------------------*/