实验名称:编程模拟此Turing机的运行过程。
实验内容: 对于任意给定的一台Turing机和任意给定的字符串w ( w不含空格),编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。
实验步骤:
1、需求分析:
图灵机有一条无限长的纸带,一个读写头,还有一个程序对它的控制。纸带分成了一个一个的小方格,每个方格有不同的状态。从读写头在纸带上读出一个方格的信息,并且根据它当前的内部状态开始对程序进行查表,根据程序输出动作到纸带方格上,并转换自己的内部状态进行移动。编程模拟图灵机的运行过程,输入一组字符串,按照图灵机的指令来进行操作。
图灵机UN+1运算的指令:
00 ->0 0 R,
01 ->1 1R,
10 ->0 1 STOP,
11 ->11R,
利用if-else if 语句根据运算指令判断内态和输出的变化。
2、 概要设计
流程图如下:
3、主要模块实现
**说明:**主函数中倒数第二句的system(“pause”)在其他电脑环境运行时可以不用加,我的软件没配置好。
(1)将十进制转换为一进制
(2) 实现图灵机UN+1运算的指令:
(3)主函数
4、测试
5、调试
调试发现程序陷入了死循环:
问题:因为转换为一进制后都是1111111….这样就不能执行第三个else if 语句,所以陷入死循环。
解决: