有穷自动机的转换

 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 }

 

转载于:https://www.cnblogs.com/crx234/p/6188540.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值