首页 > 代码库 > 有穷自动机的转换
有穷自动机的转换
1 #include<stdio.h> 2 main() 3 { 4 int i=0,j=0,x=0,y; 5 int number=2; 6 int count=0; 7 char ch; 8 char a[100][100]; 9 printf("请输入正规式以#结束 :\n"); 10 printf("^代表空\n"); 11 printf("|代表或\n"); 12 ch=getchar(); 13 do 14 { 15 if(ch==‘|‘) 16 { 17 a[i][j]=‘\0‘; 18 j=0; 19 i++; 20 ch=getchar(); 21 continue; 22 } 23 a[i][j]=ch; 24 j++; 25 ch=getchar(); 26 }while(ch!=‘#‘); 27 a[i][j]=‘\0‘; 28 for(x=0;x<=i;x++) 29 { 30 y=0; 31 count=1; 32 while(a[x][y]!=‘\0‘) 33 { 34 if(a[x][y]==‘.‘) 35 { 36 37 if(a[x][y]==‘.‘&& count==1) 38 { 39 printf("f(0,%c)=%d\n",a[x][y-1],number); 40 if(a[x][y+2]==‘\0‘) 41 printf("f(%d,%c)=1\n",number,a[x][y+1]); 42 number++; 43 count=2; 44 } 45 46 else if(a[x][y]==‘.‘&& count!=1) 47 { 48 49 printf("f(%d,%c)=%d\n",number-1,a[x][y-1],number); 50 if(a[x][y+2]==‘\0‘) 51 printf("f(%d,%c)=1\n",number,a[x][y+1]); 52 number++; 53 } 54 } 55 if(a[x][y]==‘*‘) 56 { 57 if(a[x][y]==‘*‘&& count==1) 58 { 59 printf("f(0,^)=%d\n",number); 60 printf("f(%d,%c)=%d\n",number,a[x][y-1],number); 61 if(a[x][y+1]==‘\0‘) 62 printf("f(%d,^)=1\n",number); 63 else 64 printf("f(%d,^)=%d\n",number,number+1); 65 number++; 66 count=2; 67 } 68 69 else if(a[x][y]==‘*‘&& count!=1) 70 { 71 72 printf("f(%d,%c)=%d\n",number,a[x][y-1],number); 73 if(a[x][y+1]==‘\0‘) 74 printf("f(%d,^)=1\n",number); 75 else 76 printf("f(%d,^)=%d\n",number,number+1); 77 number++; 78 } 79 } 80 y++; 81 } 82 } 83 84 }
有穷自动机的转换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。