您好,欢迎来到图艺博知识网。
搜索
您的当前位置:首页有穷状态自动机

有穷状态自动机

来源:图艺博知识网

实验三有限自动机的构造与识别

专业:商业软件工程   姓名:陈蔓嘉  学号:201506110245

一、   实验目的
1、掌握有穷状态自动机的概念;
2、掌握有穷状态自动机的存储及表示方法;
3、掌握有穷状态自动机与正则式之间的关系。

二、   实验要求
1、输入正规式;

2、构造该正规式的有穷状态自动机;

3. 以五元组形式输出。

三、    算法

1、 参见教材的转换规则。

四、  实验方法、步骤及结果测试

实验方法:

算法:

 1 #include<stdio.h>
 2 #include<string.h>
 3 int i=0,j=0,x=0;
 4 int y;
 5 int number=2;
 6 int count=0;
 7 char ch;
 8 char a[100][100];
 9 main()
10 {
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                if(a[x][y]=='.'&& count==1)
37                {
38                  printf("\n f(0,%c)=%d\n",a[x][y-1],number);
39                  if(a[x][y+2]=='\0')
40                   printf("\n f(%d,%c)=1\n",number,a[x][y+1]);
41                  number++;
42                  count=2;
43                }
44             else if(a[x][y]=='.'&& count!=1)
45                {
46                    printf("\n f(%d,%c)=%d\n",number-1,a[x][y-1],number);
47                    if(a[x][y+2]=='\0')
48                     printf("\n f(%d,%c)=1\n",number,a[x][y+1]);
49                     number++;
50             }
51             }
52              if(a[x][y]=='*')
53              {
                if(a[x][y]=='*'&& count==1)
55               {
56                    printf("\n f(0,^)=%d\n",number);
57                    printf("\n f(%d,%c)=%d\n",number,a[x][y-1],number);
58                    if(a[x][y+1]=='\0')
59                     printf("\n f(%d,^)=1\n",number);
60                    else
61                     printf("\n f(%d,^)=%d\n",number,number+1);
62                    number++;
63                    count=2;
                }
65              else if(a[x][y]=='*'&& count!=1)
66                {
67                    printf("\n f(%d,%c)=%d\n",number,a[x][y-1],number);
68                    if(a[x][y+1]=='\0')
69                     printf("\n f(%d,~)=1\n",number);
70                    else
71                     printf("\n f(%d,~)=%d\n",number,number+1);
72                    number++;
73                }
74             }
75             y++;
76         }
77     }
78 
79 }
  1. 4.运行结果及分析

 

转载于:https://www.cnblogs.com/oechen/p/6206194.html

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuoyibo.net 版权所有 湘ICP备2023021910号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务