2021-04-09

2023-10-31

C++实现XN×2图灵机模拟

算法分析

1.首先需要完成数的进制转换,将二进制数转化成十进制数,如何转化呢,这里采用除二取余的方法,这种方法就是不断得到余数,放进数组arr[],最后除以颠倒一下就行了。
2.转换成拓展二进制编码,规则就是1->10,0->0, ,->变成110,为了方便计算,后面可以多加几个0,第一位一定是0
3.将XN×2的六条指令输入进去判断里面,然后将转化好的拓展二进制编码输入循环系统进行判断,到了STOP就退出循环,结束运算。

流程图:
在这里插入图片描述

代码实现

下面展示一些 代码



```C++
#include<iostream>
using namespace std;
int main()
{
	int n,i,j;
	int temp,k,len;
	int m=0;
	int a[20],arr[20];
	int flag=0;
	cout<<"请输入一个正整数";
	cin>>n;
	while(n>0)
	{
		arr[i]=n%2;      //获取余数,计算二进制结果 
        n=n/2;
        i++;
	}
	k=i;
	for(j=0;j<i/2;j++)
	{
		temp=arr[j];
        arr[j]=arr[i-j-1];
        arr[i-j-1]=temp;
	}
	cout<<"正整数转换为二进制的结果为:";
    for(i=0;i<k;i++)
    {
    	cout<<arr[i];
	}
	cout<<"扩展的二进位编码为:"<<endl;//扩展的二进位编码
	for(j=0;j<k;j++)
	{
		if(arr[j]==1)
		{			
			if(j==0)
			{	a[m]=0;
				m++;
				a[m]=arr[j];
				m++;
				a[m]=0;
			}
			else
			{
				a[m]=arr[j];
				m++;
				a[m]=0;
			}
		m++;
		}
			else if(arr[j]==0)
			{			
				a[m]=arr[j];
				m++;
			}	
	}
	int array[6]={1,1,0,0,0,0};//{1,1,0}表示逗号,为了计算方便需要在后面多加一些0 
	for(int x=0;x<6;x++)
	{
		a[m++]=array[x];
	}
	len=m+1;
	for (m=0; m<len; m++)      
	{
		if (a[m] == 0 || a[m] == 1)
		{
			cout<< a[m];    //输出a[]
		}
	}

	cout<<endl;	
	int count=0; 
	for(i=0;i<m;i++)
	{
	
		if(flag==0&&a[i]==0)          // 内态为0输入为0时,內态变为0输入变为0
		{
			flag=0;
			a[i]=0;
			count++;
			
		}
		else if(flag==0&&a[i]==1)      //内态为0输入为1时,内态变为1输入变为0
		{
			flag=1;
			a[i]=0;
			count++;
			
		}
		else if(flag==1&&a[i]==0)       //内态为1输入为0时,内态变为0输入变为1
		{
			flag=0;
			a[i]=1;
			count++;
			
		}
		else if(flag==1&&a[i]==1)         //内态为1输入为1时,内态变为10输入变为0
		{
			flag=10;
			a[i]=0;
			count++;
			
		}
		else if(flag==10&&a[i]==0)      //内态为10输入为0时,内态变为11输入变为1
		{
			flag=11;
			a[i]=1;
			count++; 
		}
		else if(flag==10&&a[i]==1)      //内态为10输入为1时,内态变为0输入变为0
		{
			flag=0;
			a[i]=0;
			count++;
			
		}
		else if(flag==11&&a[i]==0)      //内态为11输入为0时,内态变为0输入变为1
		{
			flag=0;
			a[i]=1;
			count++;
			
		}
	    else if(flag==11&&a[i]==1)      //内态为11输入为1时,内态变为0输入变为0
		{
			flag=0;
			a[i]=0;
			count++;
			
		}
		cout<<"第";
		cout<<count;
		cout<<"次";
		
		cout<<"运行结果:"; 
	    for(j=0;j<m;j++)
	    {
	    
		
		    cout<<a[j];
	    }
	    cout<<endl;
	 } 
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2021-04-09 的相关文章

  • Conda 配置 Python 环境

    文章目录 前言 一 Conda 是什么 二 如何获取 三 使用 Conda 命令配置多环境 1 创建新环境 2 激活新环境 3 配置新环境 4 退出新环境 5 检查所有环境 6 检查所有安装的包 7 删除某环境 8 重命名某环境 四 使用
  • Crontab配置任务定时执行

    一 每奇数周的周一执行 16 0 1 date W 2 eq 1 gt dev null sh data1 test sh 具体地 1 分钟字段 Minute field 16 2 小时字段 Hour field 0 3 日期字段 Day
  • 亚马逊首席技术官Werner Vogels:2023年及未来五大技术趋势预测

    近年来 随着我们经历的数次全球危机 如何借助技术解决人类棘手问题至关重要 如今 我们获取数据的来源比以往任何时候都多 包括可穿戴设备 医疗设备 环境传感器 视频捕获和其他联网设备 当这些数据与计算机视觉 机器学习和模拟仿真等云技术相结合时

随机推荐

  • OpenWrt目录之target

    target目录下主要是和平台有关的代码 最主要的是linux文件夹 linux文件夹的ramips中 ramips应该指的是对应cpu的架构 ramips文件夹下的就是不同系列的cpu对应的芯片的型号 进行试验一下 首先在根目录下运行ma
  • IDEA工具实用开发快捷键

    选中new ArrayList lt gt 或者光标放在new前面 按ctrl alt v 选中new ArrayList lt gt 或者光标放在new后边面 按ctrl alt 空格 ideal 工具没识别maven项目的话 右键pom
  • uni-app开发微信小程序,button通过数组的length判断disabled无效(数组length === 0写法无效)

    错误写法
  • caffe特征提取/C++数据格式转换

    Caffe生成的数据分为2种格式 Lmdb 和 Leveldb 它们都是键 值对 Key Value Pair 嵌入式数据库管理系统编程库 虽然lmdb的内存消耗是leveldb的1 1倍 但是lmdb的速度比leveldb快10 至15
  • 国产操作系统进入被彻底抛弃的时代

    当倪光南正在不断呼喊支持国产操作系统的时候 国产操作系统却迎来了噩梦 国产操作系统接连倒闭 国产操作系统进入一个被国家彻底抛弃的时代 红旗linux梦断国产操作系统 今年2月中科红旗linux因为缺钱倒闭解散了 一直以来做得最好的国产操作系
  • 图形学数学基础之基本蒙特卡罗尔积分(Monte Carlo Integration)

    作者 i dovelemon 日期 2017 07 29 来源 CSDN 主题 Monte Carlo Integration 引言 好久没有写博客了 最近一直在忙于工作 同时GLB库中关于PBR的渲染算法 一直卡住 无法实现下去 不过在这
  • dd大牛的《背包九讲》

    P01 01背包问题 题目 有N件物品和一个容量为V的背包 第i件物品的费用是c i 价值是w i 求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量 且价值总和最大 基本思路 这是最基础的背包问题 特点是 每种物品仅有一件 可以选
  • 【HCNP路由交换学习指南】学习笔记丨第07章 BGP

    07 BGP BGP 的基本概念 BGP 对等体关系类型 IBGP 水平分割原则 路由黑洞问题及 BGP 同步规则 路由通告 Router ID 报文类型及格式 Open 报文 Update 报文 Keepalive 报文 Notifica
  • PaddleOCR使用笔记之模型训练

    目录 简介 模型训练 步骤一 文本检测模型 detection 1 准备训练数据集 2 下载预训练模型 模型介绍 下载预训练模型 3 开始训练 断点训练 4 模型评估 5 模型测试 6 训练模型转inference模型 步骤二 文本识别模型
  • RabbitMQ保证消息的一致性解决方案

    RabbitMQ保证消息的一致性 一 采用confirm消息确认机制及return返回机制 确保消息发送成功 二 将队列以及消息设置持久化 保证rabbitmq突然宕机消息仍然存在 三 手动确认接收消息方式 消息处理失败拒收重回队列 1 y
  • 后端响应是否成功、信息、操作码响应前端及异常处理

    异常处理流程 1 自定义异常类型 2 自定义错误代码及错误信息 3 对于可预知的异常由程序员在代码中主动抛出 由SpringMVC统一捕获 可预知异常是程序员在代码中手动抛出本系统定义的特定异常类型 由于是程序员抛出的异常 通常异常信息比较
  • java反射(从认识到应用)-黑马笔记

    此文章是观看黑马雷哥关于Java反射的视频做的笔记 如有错请多指教 一 认识反射 反射在JavaAPI中的详解 说白了 反射就是 加载类 并允许以编程方式解剖类中的各种成分 成员变量 方法 构造器等 如图 二 反射还学什么 加载类 获取类的
  • 做题

    在一个文件中定义一个全局变量 n 主函数 main 在另一个文件中定义函数 fn1 在 main 中对 n 赋值 再调用 fn1 在 fn1 中也对 n 赋值 显示 n 最后的值 include using namespace std in
  • style对象和less/scss互相转换,驼峰转中横线,支持嵌套转换

    不知道有没有小伙伴在维护或重构前端项目时修改样式的时候遇到js style和less scss需要互相转换的问题 本人找网上没有比较完善的转换工具 要么嵌套不支持 要么兼容不好 于是自己写了一个 请大家参考 emotion style In
  • CSDN英雄大会之 SOA技术观感

    5号假装英雄去北京参加了CSDN技术英雄大会 见到了很多一直想见的同行高手还有编辑记者 这里就不一一列举了 只是从SOA中间件开发角度列一下相关的内容 1 IBM如下划分SOA与构件 SOA4类关键构件 基础构件WAS MQ 流程构件WPS
  • 设置一个FreemarkerExceptionHandler捕获freemarker页面上的异常

    在Freemarker页面中如果使用 userName 并且userName为空 那么Freemarker页面就会崩掉 需要设置默认值 userName 来避免对象为空的错误 同理 user userName 也应该写成这样 user us
  • WaveOut播放声音死锁问题原因

    1 首先我们复习下造成死锁的几个充要条件 1 互斥 互斥资源 只能被一个进程使用 2 不剥夺 非抢占式调度 不能强行抢用其他进程资源 3 请求和保持 占有着资源不释放 同时申请其他资源 4 环路等待 没什么可说的 在WaveOutReset
  • java.lang.IncompatibleClassChangeError: Found interface org.elasticsearch.common.bytes.BytesReferenc

    项目场景 再学谷粒商城时 练习elasticsearch时出现一下错误 问题描述 原因分析 提示 出现java lang IncompatibleClassChangeError Found interface org elasticsea
  • redis 由浅入深之 redis.conf配置文件

    是否以后台进程运行 默认为no 如果需要以后台进程运行则改为yes daemonize no 如果以后台进程运行的话 就需要指定pid 你可以在此自定义redis pid文件的位置 pidfile var run redis pid 接受连
  • 2021-04-09

    C 实现XN 2图灵机模拟 算法分析 代码实现 算法分析 1 首先需要完成数的进制转换 将二进制数转化成十进制数 如何转化呢 这里采用除二取余的方法 这种方法就是不断得到余数 放进数组arr 最后除以颠倒一下就行了 2 转换成拓展二进制编码