HUNAN UNIVERSITY
计算理论导引
实验报告
题 目:图灵机(Turing)的模拟学生姓名:学生学号:专业班级:计算机科学与技术2班上课老师:实验日期:2014-1-6目 录
一、实验目的2
二、实验内容2
三、实验代码2
四、测试数据以及运行结果8
五、实验感想9
一、实验目的
1、掌握Turing机的概念。
2、掌握Turing机的运行过程,了解每一个格局的转化。
二、实验内容
对于任意给定的一台Turing机和任意给定的字符串w ( w不含空格),编程模拟此Turing机的运行过程,要求输出从开始运行起的每一格局。
三、实验代码
/*****************************************************************
图灵机的模拟过程
计科二班20110801212张琦佳
*****************************************************************/
# include
# include
# include
ofstream outfile("homework.txt");//打开文件
# define N 1000//纸带长度
# define S 10//纸带前的空余
# define M 10//数字长度
int state;//记录当前状态
int currentpos;//记录当前位置
int halt;//退出
int i;//临时辅助变量
int s;//临时存储状态
char tape[N];//纸带长度
char number[M];//存储x
char c1;//临时存储字符
char c2;//临时存储字符
char d;//方向输出
void start()
{
for(i = 0;i < N - 1;i++)//初始化纸带
tape[i] = 'B';
tape[N-1] = '\0';
cout<
while(1)//判断二进制
{
state = 1;
cout<
cin>>number;
for(i = 0;i < M && number[i] != '\0';i++)
if(number[i] >'1' || number[i] < '0')
state = 0;
if(state)
break;
else
cout<
}
for(i = S;i < S + M && number[i-S] != '\0';i++) //将数字写入纸带
tape[i] = number[i-S];
currentpos = S;//初始化
halt = 1;//此时state = 1
d = 'R';//初始为右移
cout<
}
void homework()//写入文件
{
outfile<
outfile<
outfile<
outfile<
outfile<
outfile<
outfile<
}
void print()//输出函数
{
cout<"<
o