#pragma warning (disable:4996) #include #include #define M_PI (double)3.14159265358979323846e0 #define NN (int)1000 int TNHSS; //Total Number of the High School Student int TNUE; //Total Number of the University Examinee int TNUE_C; //Calculated Total Number of the University Examinee double DVHSS[NN]; //Deviation Value of the High School Student int RO_HSDV[NN]; //Rank Order of the High School Student (HSDV) double ARUE_HSDV[NN];//Application Rate of the University Examinee (HSDV) int ROUE_HSDV[NN]; //Rank Order of the University Examinee (HSDV) double DVUE[NN]; //Deviation Value of the University Examinee int ROUE_UEDV[NN]; //Rank Order of the University Examinee (UEDV) void INIT(void); double NDF5010(double bDV); //Normal Distribution Function, MV is 50, SD is 10 double ARUE(double bDV); //Applicant Rate of the University Examinee double INTEGRAND(int mode,double bDV);//integrand function double SIMPSON(int mode,double bDDV,double bLDV,double bUDV); //integration of NDF5010 with Simpson's rule int main(void) { int i; double DELTA_DV,LOWER_DV,UPPER_DV; double buf0; FILE *fp; INIT(); LOWER_DV=0.0e0; UPPER_DV=1.0e2; DELTA_DV=pow(2.0e0,-4.0e0); TNHSS=1055807; //total number of the high school student TNUE=631267; //total number of the university examinee TNUE_C=(int)SIMPSON(1,DELTA_DV,LOWER_DV,UPPER_DV); //total number of the university examinee for(i=0;i=5.8e1){value=1.0e0;} return value; } double INTEGRAND(int mode,double bDV) { double value; double buf0,buf1; switch (mode) { case 0: buf0=NDF5010(bDV); value=TNHSS*buf0; break; case 1: buf0=ARUE(bDV); buf1=NDF5010(bDV); value=TNHSS*buf0*buf1; break; case 2: buf0=NDF5010(bDV); value=TNUE_C*buf0; break; default: value=-1.0e0; break; } return value; } double SIMPSON(int mode,double bDDV,double bLDV,double bUDV) { int i,bn; double value; double buf0,buf1,buf2,buf3; if((bDDV<=0.0e0)||(bUDV<=bLDV)){return 0.0e0;} bn=(int)((bUDV-bLDV)/bDDV); if(bn==0){ buf0=5.0e-1*(bLDV+bUDV); value=INTEGRAND(mode,bLDV)+4.0e0*INTEGRAND(mode,buf0)+INTEGRAND(mode,bUDV); value*=(bUDV-bLDV)/6.0e0; }else{ value=0.0e0; buf0=5.0e-1*bDDV; for(i=1;i<=bn;i++){ buf1=bLDV+(double)(i-1)*bDDV; buf2=buf1+buf0; buf3=buf1+bDDV; value+=INTEGRAND(mode,buf1)+4.0e0*INTEGRAND(mode,buf2)+INTEGRAND(mode,buf3); } value*=bDDV/6.0e0; buf1=buf3; buf2=5.0e-1*(buf1+bUDV); buf3=bUDV; buf0=INTEGRAND(mode,buf1)+4.0e0*INTEGRAND(mode,buf2)+INTEGRAND(mode,buf3); buf0*=(bUDV-buf1)/6.0e0; value+=buf0; } return value; }