永发信息网

确定有穷自动机c语言实现

答案:1  悬赏:80  手机版
解决时间 2021-03-16 01:05
  • 提问者网友:雨不眠的下
  • 2021-03-15 15:42
确定有穷自动机c语言实现
最佳答案
  • 五星知识达人网友:人间朝暮
  • 2021-03-15 16:09
1 #include
2 //s为初态,z为终态
3 int in(int s,int z)
4 {
5 if(s == z)
6 {
7 printf("3\nlook!the last status belongs to Z");
8 return 1;
9 }
10 else
11 {
12 return 0;
13 }
14 }
15 //s为状态,t为输入的字符
16 int step(int s,char t)
17 {
18 if(t == 'a')
19 switch(s)
20 {
21 case 0:return 1;
22 case 1:return 3;
23 case 2:return 1;
24 case 3:return 3;
25 }
26 else if(t == 'b')
27 switch(s)
28 {
29 case 0:return 2;
30 case 1:return 2;
31 case 2:return 3;
32 case 3:return 3;
33 }
34 }
35
36 int realize(char *input)
37 {
38 int z = 3;
39 int s,i;
40 s = 0;
41 for(i=0;input[i]!='\n';i++)
42 {
43 printf("%2d",s);
44 s = step(s,input[i]);
45 }
46 if(in(s,z))
47 {
48 return 1;
49 }
50 else
51 {
52 return 0;
53 }
54 }
55
56 main()
57 {
58 int i;
59 int a;
60 char input[40];
61 printf("FA=({0,1,2,3},{a,b},M,0,{3})\n");
62 printf("M:\n");
63 printf(" M(0,a)=1 M(0,b)=2\n");
64 printf(" M(1,a)=3 M(1,b)=2\n");
65 printf(" M(2,a)=1 M(2,b)=3\n");
66 printf(" M(3,a)=3 M(3,b)=3\n");
67 printf("请输入你要检查的串");
68
69 lop: for(i=0;input[i-1] != '\n';i++)
70 {
71 scanf("%c",&input[i]);
72 }
73 for(i=0;input[i-1]!='\n';i++)
74 {
75 if(input[i] != 'a'&&input[i] != 'b'&&input[i] != '\n')
76 {
77 printf("input error,enter again please:\n");
78 goto lop;
79 }
80
81 }
82 printf("the status sequence is :\n");
83 a = realize(input);
84 if(a == 1)
85 printf("\nSo this string can be identified\n");
86 else
87 printf("\nSo this string can't be identified\n");
88 printf("press enter to exit the program\n");
89 getchar();
90
91 }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯