这是一个未完成的程序
#include<stdio.h> #include<string.h> char a[20][10]; char Vn[26]; char Vt[64]; int M=0; int N=0; int m=0; int flag=-1; void initial() //³õʼ»¯ { for(int b=0;b<26;b++) Vn[b]='#'; for(int c=0;c<64;c++) Vt[c]='#'; for(int d=0;d<20;d++) for(int e=0;e<10;e++) a[d][e]='#'; } void group() //ÅжÏÖÕ½á·ûºÅ { for(int k=0;a[k][0]!='e';k++) { for(int f=0;a[k][f]!='\0';f++) { if((a[k][f]>='A')&&(a[k][f]<='Z')) { for(int x=0;x<=M&&M<=27;x++) if(Vn[x]==a[k][f]) break; if((x-1)==M) { Vn[M]=a[k][f]; M++; } } else { for(int y=0;y<=N&&N<=20;y++) { if(a[k][f]==':'||a[k][f]=='=') break; else { if(Vt[y]==a[k][f]) break; } } if((y-1)==N) { Vt[N]=a[k][f]; N++; } } } } } void input() { for(int i=0;i<10;i++) a[m][i]='#'; scanf("%s",a[m]); while(strcmp(a[m],"end")) { if((a[m][0]>='A')&&(a[m][0]<='Z')) { int h=4; if((a[m][h]>='A')&&(a[m][h]<='Z')) { if((a[m][h+1]<'A')||(a[m][h+1]>'Z')) { if(a[m][h+2]!='\0') { printf("´Ë¹æÔò²»ÊÇÕýÔòÎÄ·¨µÄ¹æÔò£¬ÇëÖØÐÂÊäÈë\n"); input(); break; } } else { printf("´Ë¹æÔò²»ÊÇÕýÔòÎÄ·¨µÄ¹æÔò£¬ÇëÖØÐÂÊäÈë\n"); input(); break; } } else { if(a[m][h+1]!='\0') //U::=T { printf("´Ë¹æÔò²»ÊÇÕýÔòÎÄ·¨µÄ¹æÔò£¬ÇëÖØÐÂÊäÈë\n"); input(); break; } } } m++; scanf("%s",a[m]); } } void recongnise() //ÅжÏÊÇÈ·¶¨»¹ÊÇ·ÇÈ·¶¨ { for(int i=0;a[i][0]!='e';i++) { for(int j=i+1;a[j][0]!='e';j++) { int n=4; if(a[i][n]==a[j][n]) n++; if(a[i][n]==a[j][n]) break; } int h=4; if(a[i][h]==a[j][h]) h++; if(a[i][h]==a[j][h]) //U::=T { printf("´ËÎÄ·¨¶ÔÓ¦µÄÓÐÇî״̬×Ô¶¯»úÊÇ·ÇÈ·¶¨µÄ\n\n"); flag=0; break; } } if(a[i][0]=='e') //U::=WT { printf("´ËÎÄ·¨¶ÔÓ¦µÄÓÐÇî״̬×Ô¶¯»úÊÇÈ·¶¨µÄ\n\n"); flag=1; } } void output() //Êä³öÎÄ·¨ÏàÓ¦µÄÓÐÇî״̬×Ô¶¯»ú { if(flag==0) { printf("NFA N=({"); for(int i=0;Vn[i]!='#';i++) printf("%c,",Vn[i]); printf("S},{"); for(int j=0;Vt[j]!='#';j++) printf("%c,",Vt[j]); printf("},M',{S},{%c})\n",Vn[0]); printf("ÆäÖÐM':\n"); for(int x=0;Vn[x]!='#';x++) { for(int y=0;Vt[y]!='#';y++) { printf("M'(%c,%c)=",Vn[x],Vt[y]); for(int z=0;a[z][0]!='e';z++) if(a[z][4]==Vn[x]) if(a[z][5]==Vt[y]) printf("%c",a[z][0]); if(a[z][0]=='e') printf("\t"); } printf("\n"); } for(int u=0;Vt[u]!='#';u++) { printf("M'(S,%c)=",Vt[u]); for(int k=0;a[k][0]!='e';k++) if(a[k][4]==Vt[u]) printf("%c",a[k][0]); if(a[k][0]=='e') printf("\t"); } } if(flag==1) { printf("DFA N=({"); for(int b=0;Vn[b]!='#';b++) printf("%c,",Vn[b]); printf("S},{"); for(int c=0;Vt[c]!='#';c++) printf("%c,",Vt[c]); printf("},M',S,{%c})\n",Vn[0]); printf("ÆäÖÐ:\n"); for(int p=0;Vn[p]!='#';p++) { for(int q=0;Vt[q]!='#';q++) for(int r=0;a[r][0]!='#';r++) if(a[r][4]==Vn[p]) if(a[r][5]==Vt[q]) printf("M'(%c,%c)=%c\t",Vn[p],Vt[q],a[r][0]); printf("\n"); } for(int d=0;Vt[d]!='#';d++) { for(int e=0;a[e][0]!='e';e++) if(a[e][4]==Vt[d]) printf("M'(S,%c)=%c\t",Vt[d],a[e][0]); } } } void main() { initial(); printf("ÇëÊäÈëÎÄ·¨£¨ÒÔEND½áÊø£©:\n"); input(); group(); printf("\n"); recongnise(); output(); printf("\n"); }