图灵机程序(UN+1)

标题:图灵机(UN+1)程序

一.题目分析
对于任意给定的一台Turing机和任意给定的字符串w ( w不含空格),编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。
二.算法构造

在这里插入图片描述

三.算法实现

#include<iostream>
#include<string.h>
using namespace std;
int main()
{	int i,j,l;
	int inter=0;
	string a;
	cin>>a;	
	l=a.length();
for(i=0;i<l;i++)
	{  //图灵机的基本实现步骤
	if(inter==0&&a[i]==48)	
	{	   
	       inter=0;
	       a[i]='0';
	       cout<<"(1) ";
	       for(int k=0;k<l;k++)
	       cout<<a[k]<<" ";
	 }	
	 if(inter==0&&a[i]==49)
	{		
	        inter=1;
	        a[i]='1';
	        cout<<endl<<"(2) ";
	        for(int k=0;k<l;k++) 
	        cout<<a[k]<<" ";
	 }	
	 if(inter==1&&a[i]==48)
	 {	   
	        inter=0;
	        a[i]='1';
	        cout<<endl<<"(3) ";
	        for(int k=0;k<l;k++)
	        cout<<a[k]<<" ";
	        cout<<endl<<"最终结果:";
	        break;
	  }	
	  if(inter==1&&a[i]==49)	
	  {   	  
	        inter=1;
	        a[i]='1';
	        cout<<endl<<"(4) ";
	        for(int k=0;k<l;k++)
	        cout<<a[k]<<" ";
	   }
	   }  
	   for(int k=0;k<l;k++)
	   cout<<a[k]<<" ";
return 0;
}

四.调试,测试及运行结果

测试截图:
在这里插入图片描述
调试截图:
在这里插入图片描述

五.经验归纳

在此次有关图灵机的运行原理编程的过程中,重要的是理清楚算法,即清楚每一步内态和输入或者输出的状态。

还有在这次编程中我遇到了一个问题,就是我输入的数字,数组当作了一个字符串,所以程序总是进不去循环,所以我用阿斯克码表示了1和0,因此才进入循环并且用了一个函数测量了数组的长度。

猜你喜欢

转载自blog.csdn.net/prayer_x/article/details/88730265