c语言sscanf函数的用法是什么
271
2023-01-22
如何用Java模拟XN*2图灵机
题目描述:
对于XN*2图灵机进行模拟,任意给定的十进制数,转换为收缩扩展二进制的编码,再编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。用C或C++或java或python语言实现程序解决问题。
0;要求:1. 程序风格良好(使用自定义注释模板);
2. 提供友好的输入输出,并进行输入数据的正确性验证。
算法分析:
1. 将十进制数转换为二进制数;
2. 将二进制数转换为收缩扩展二进制的编码;
3. 根据当前的内态和输入执行XN*2图灵机的指令;
4. 将结果的二进制编码转换为二进制数;
5. 将二进制数转换为十进制数,实现乘2运算功能。
概要设计:
算法流程图如下:
测试:
输入的十进制数
正确的二进制编码
输出的二进制编码
正确的运算结果
输出的运算结果
0
0011000
0011000
0
0
3
0101011000
0101011000
6
6
http://
18
0100010011000
0100010011000
36
36
运行结果:
调试:
①对调用指令的方法进行调试,开始时binCodeList的size为0,导致执行binCodeList.set(i, “0”)时出现错误,进过调试后发现是因为没给方法设置binCodeList的参数,导致方法中用的是类中空的binCodeList。在方法的参数中加上List
②对将二进制编码转换为十进制数的方法进行调试,开始时运算结果出现错误,调试后发现是判断第i个字符为1,第i+1个字符为0后,没有将i再加1,导致下次循环又遍历到i+1的0,于是有些步骤结果就会多出0。在if (binCode.charAt(i + 1) == '0'){…}代码块中加上i++就可以解决。
源代码:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~