博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有穷状态自动机
阅读量:5246 次
发布时间:2019-06-14

本文共 2549 字,大约阅读时间需要 8 分钟。

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

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

一、   实验目的

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

二、   实验要求

1、输入正规式;

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

3. 以五元组形式输出。

三、    算法

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

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

实验方法:

  1. 源程序名:压缩包文件(rarzip词法分析程序.zip
  2. 源程序名:词法分析程序.c
  3. 可执行程序名:词法分析程序.exe

算法:

1 #include
2 #include
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 do14 {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 {54 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 else61 printf("\n f(%d,^)=%d\n",number,number+1);62 number++;63 count=2;64 }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 else71 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

你可能感兴趣的文章
夫战,勇气也
查看>>
利用jar -cvf *.jar * 和直接islibrary 然后生成的jar包比较(Android中jar包封装及调用)...
查看>>
一个3D游戏DEMO, 同步教程更新
查看>>
bootstrap基础学习三篇
查看>>
MSIL实用指南-装箱拆箱
查看>>
一致性hash理解
查看>>
线程睡眠
查看>>
Kindle fire 刷机
查看>>
《CSS3使用指南》读书笔记
查看>>
创建一个简单的带事务的存储过程
查看>>
我写的DBHelp
查看>>
HDU2544 最短路(floyd)
查看>>
数据库连接池
查看>>
ble学习笔记四---------------------控制lcd
查看>>
kali自定义分辨率(1920*1080)
查看>>
HDU4054_Hexadecimal View
查看>>
网页css效果调试技巧
查看>>
Python【第三课】 函数基础
查看>>
AX2009使用Microsoft.Dynamics.AX.Fim导出EXCEL
查看>>
实验12:Problem F: 求平均年龄
查看>>