标题:图灵机(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,因此才进入循环并且用了一个函数测量了数组的长度。