/*来自p2c的输出,Pascal-to-C转换器*//*从输入文件“process.pas”*/#包括typedef结构弧{uchar bi、bj、ei、ej、nr;长计数;}电弧;静态长深度_计数[30][30];静态布尔启动[30][30];静态文件*结果文件,*进程文件;静态长总,节点;静态电弧[1000];静态短路nr_arcs;静态空隙init_arcs(){nr_arcs=0;}静态Void store_arc(nbi,nbj,nei,nej,nnr,ncount)uchar nbi、nbj、nei、nej、nnr;长计数;{乌查尔一世;布尔go;弧*WITH;nr_arcs++;i=nr _ arcs;go=真;while(转到&&i>1){if(弧[i-2].计数<=计数)go=假;其他{弧[i-1]=弧[i-2];i——;}}WITH=圆弧[i-1];带->bi=nbi;带有->bj=nbj;WITH->ei=nei;带有->ej=nej;带->nr=nnr;WITH->count=ncount;}静态无效打印_弧度(输出)文件**输出;{乌恰尔i,福尔姆;弧*WITH;FORLIM=nr_arcs;对于(i=0;i<FORLIM;i++){WITH=圆弧[i];fprintf(*out,“(%12d,%12d)\t->(%12b,%12d)\t%5d\t%12ld\013”,带有->bi、带有->bj、带有->ei、带有->ej、带有->nr、带有->count);}}静态空隙init_start(n,m)乌查尔n,m;{uchar i,j;对于(i=0;i<n;i++){对于(j=0;j<m;j++)start[i][j]=真;}}静态空隙移除_启动(n,m,i,j)乌查尔n,m,i,j;{开始[i-1][j-1]=false;开始[n-i][j-1]=假;开始[i-1][m-j]=假;开始[n-i][m-j]=假;}静态空隙过程值(n,m,i,j)乌恰尔n,m,i,j;{uchar i1、j1、c、maxj;如果(j+j==m+1)最大j=j;其他的最大j=m;开始[i-1][j-1]=false;对于(i1=1;i1<=n;i1++){对于(j1=1;j1<=最大j;j1++){if(开始[i1-1][j1-1]&&depthcount[i1-1][j1-1]!=0){如果(i+i1==n+1&&j+j1==m+1){如果(i==i1|j==j1)c=1;其他的c=2;}else if((i+i1==n+1 |j+j1==m+1)&&(i==i1|j==j1)c=2;其他的c=4;store_arc(i,j,i1,j1,c,深度计数[i1-1][j1-1]);总+=深度计数[i1-1][j1-1]*c;节点+=c;}}}删除开始(n,m,i,j);}/*process_eq_values的局部变量:*/结构LOC_process_eq_values{uchar n,i,j,i1,j1,c;} ;本地无效添加(链接)结构LOC_process_eq_values*LINK;{if(!(开始[LINK->i1-1][LINK->j1-1]&&depth_count[链接->i1-1][链接->j1-1]!=0))回报;如果(链接->i+链接->i1==链接->n+1&&链接->j+链接->j1==连接->n+1){如果(链接->i==链接->i1||链接->j==链接->j1||连接->i==LINK->j||链接->i+链接->j==链接->n+1)链接->c=2;其他的链接->c=4;}否则,如果(链接->i+链接->i1==链接->n+1&&链接->j==链接->j1||链接->j+链接->j1==链接->n+1&&链接->i==链接->i1||链接->i+链接->i1==链接->n+1&&链接->i==链接->i1||链接->j+链接->j1==链接->n+1&&链接->j==链接->j1||(abs(链接->i-链接->i1)==abs(连接->j-链接->j1)&&(链接->i+链接->i1==链接->j+链接->j1||链接->i+链接->i1+LINK->j+链接->j1==链接->n+链接->n+2))链接->c=4;其他的链接->c=8;store_arc(链接->i,链接->j,链接->i1,链接->j1,链接->c,depth_count[链接->i1-1][链接->j1-1]);total+=depth_count[链接->i1-1][链接->j1-1]*链接->c;节点+=链接->c;}静态无效过程_eq_values(n_,i_,j_)uchar n,i,j;{结构LOC_process_eq_values V;字符ch;乌查·福尔姆,福尔姆1;V.n=n_;V.i=i_;V.j=j_;printf(“%3d%3d”,V.i,V.j);开始[V.i-1][V.j-1]=假;如果(V.i==V.j){FORLIM=V.n;对于(V.i1=1;V.i1<=FORLIM;V.i 1++){FORLIM1=V.n;用于(V.j1=V.i1;V.j1<=FORLIM1;V.j1++)添加(&V);}}其他{如果(V.j+V.j==V.n+1){FORLIM=V.n;对于(V.i1=1;V.i1<=FORLIM;V.i 1++){FORLIM1=V.n;用于(V.j1=V.j;V.j1<=FORLIM1;V.j1++)添加(&V);}}其他{FORLIM=V.n;对于(V.i1=1;V.i1<=FORLIM;V.i 1++){FORLIM1=V.n;用于(V.j1=1;V.j1<=FORLIM1;V.j1++){如果(V.j1!=V.i||V.i1+V.j!=V.n+1)添加(&V);}}}}remove_start(V.n、V.n、V.i、V.j);删除启动(V.n、V.n、Vj、V.i);}静态空隙process_one_size(){字符ch;乌恰尔n,m,i,j;长nm,计数;uchar i1,j1;布尔优先;int TEMP,TEMP1,TEMP2,TEMP3;节点=0;总计=0;first=真;init_arcs();做{ch=获取c(结果文件);如果(ch==“\n”)ch=“”;如果(ch=='t'){fscanf(结果文件,“%*[^\n]”);获取(结果文件);fscanf(结果文件,“%*[^\n]”);获取(结果文件);fscanf(结果文件,“%*[^\n]”);获取(结果文件);}其他{fscanf(result_file,“%d%d%d%d%ld%*[^\n]”,&TEMP,&TEMP1,&TEMP2,&TMP3,&计数);获取(结果文件);n=温度;m=温度1;i=温度2;j=温度3;if(第一个){初始开始(n,m);fprintf(process_file,“大小%3d%3d\013\013\013”,n,m);first=false;}对于(i1=0;i1<n;i1++){对于(j1=0;j1<m;j1++)fscanf(结果文件,“%ld”,深度计数[i1][j1]);fscanf(结果文件,“%*[^\n]”);获取(结果文件);}如果(n==m)进程_eq值(n,i,j);其他的过程值(n、m、i、j);fscanf(结果文件,“%*[^\n]”);获取(结果文件);}}while(ch!='t');print_arcs(&process_file);fprintf(process_file,“\013总计=%12ld\n”,总计);nm=n*m;printf(“%5ld%5ld\n”,节点,nm*(nm-1)/2);}主(argc、argv)整型参数;字符*argv[];{/*p2c:process.pas,第201行:警告:*不知道如何向非plicit文件变量赋值[207]*/PASCAL_MAIN(argc,argv);process_file=空;结果文件=空;result_file=fopen(“result.dat”,“r”);/*p2c:process.pas,第202行:警告:*不知道如何分配给非显式文件变量[207]*/process_file=fopen(“process4.doc”,“w”);倒带(结果文件);if(进程文件!=空){/*p2c:process.pas,第204行:*注:REWRITE未指定名称[181]*/倒带(process_file);}其他进程文件=tmpfile();if(进程文件==空)_EscIO(找不到文件);while(!P_eof(结果文件))进程one_size();if(进程文件!=空)fclose(进程文件);process_file=空;if(结果文件!=空)fclose(结果文件);if(process_file!=NULL)fclose(进程文件);退出(exit_SUCCESS);}/*结束*/