/**
*@对于Turing机(XN X 2)和任意给定的字符串w(w不含空格),编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果
*@西安科技大学软工1702班
*@author:侯明会
*/
#include<iostream>
#include<string>
using namespace std;
string Change(string w)//执行运算 XN X 2的指令
{
string m,x;
char n;
m="0";//m表示内态
n=w[0];//n表示输出
for(int i=0;i<w.length();i++)//通过循环对编码w的每一个字符变量进行运算
{
x=m+n;//x表示初态
if(x=="00")//指令0 0->0 0 R
{
w[i]='0';
m="0";
n=w[i+1];
}
if(x=="01")//指令0 1->1 0 R
{
w[i]='0';
m="1";
n=w[i+1];
}
if(x=="10")//指令1 0->0 1 R
{
w[i]='1';
m="0";
n=w[i+1];
}
if(x=="11")//指令1 1->10 0 R
{
w[i]='0';
m="10";
n=w[i+1];
}
if(x=="100")//指令10 0->11 1 R
{
w[i]='1';
m="11";
n=w[i+1];
}
if(x=="110")//指令11 0->0 1 STOP
{
w[i]='1';
m="0";
n=w[i+1];
}
}
return w;
}
void main()
{
string w;
cout<<"请输入磁带编码w:"<<endl;
cin>>w;
w=w+"00";
string v;
v=Change(w);
cout<<"实现运算后的磁带编码为:\n"<<v<<endl;
}
图灵机(XN x 2)运算(C++)
最新推荐文章于 2021-04-14 13:57:05 发布