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 语句,所以陷入死循环。
解决:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值