UN+1图灵机的编程实现

实验名称:编程模拟此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 语句,所以陷入死循环。
解决:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45915957/article/details/105388627