日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图灵机的编程实现

發布時間:2024/3/12 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图灵机的编程实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、題目分析:

1.題目:對于任意給定的一臺Turing機和任意給定的字符串w ( w不含空格),編程模擬此Turing機的運行過程,要求輸出從開始運行起的每一步驟的結果。

2.分析:

第一步:十進制數轉化為二進制數;

第二步:給轉化好的十進制數上識別’0’或’1’,并將0轉化為0,1轉化為10,并加上逗號,其用數字表示為110.

第三步:利用for循環以及if條件語句,將每一種內態和輸入的結果表示出來,并有最終的運行操作。

二、算法構造:

流程圖:

?

?

三、算法實現:

整體代碼:

#include<iostream>

#include<string>

using?namespace?std;

void?main()//轉化函數,十進制數轉化為二進制數,并將更改后的編碼輸出(包括逗號)

{??

int?m,i,j,k,a[30];

int?s=0;

cout<<"請輸入想要轉化的十進制數:"<<endl;

????cin>>m;

?

for(i=15;i>=0;i--)

{

k=m%2;

j=m/2;

m=j;

a[i]=k;

}//用數組記錄除以二的余數

for(i=0;i<16;i++)

{?

?

???cout<<a[i];//將除二余數倒序輸出。

??

}

cout<<"????";

for(i=0;i<18;i++)

{?if(a[i]==1)

???{

???for(j=18;j>=i;j--)

???{

???a[j+1]=a[j];

???}

???a[i+1]=0;

???}

???

cout<<a[i];

}

??????a[18]=1;a[19]=1;a[20]=0;

?

cout<<a[18]<<a[19]<<a[20]<<endl;//輸出逗號所代表的值

a[21]=0,a[22]=0,a[23]=0,a[24]=0,a[25]=0;

for(i=13;i<25;i++)//根據不同的內態,不同的輸入,會對圖靈機上的輸出造成的結果

{

if(s==0&&a[i]==0)

{

????????????a[i]=0;

s=0;

for(j=0;j<21;j++)

{

cout?<<a[j];

}

cout<<"??";

continue;//內態為0,輸入為0時,輸出為0,下一內態也為0

?

?

}

if(s==0&&a[i]==1)

{

a[i]=0;

s=1;

?

for(j=0;j<21;j++)

{

cout?<<a[j];

}cout<<"??";

continue;//內態為0,輸入為1時,輸出為0,下一內態為1

}

if(s==1&&a[i]==0)

{

a[i]=1;

s=0;

?

for(j=0;j<21;j++)

{

cout?<<a[j];}cout<<"??";

continue;

}//內態為1,輸入為0時,輸出為1,下一內態為0

if(s==1&&a[i]==1)

{

s=10;a[i]=0;

???? for(j=0;j<21;j++)

{

if(j==i)

{

a[j]=0;

}

cout?<<a[j];}

??????????cout<<"??";

??????????

continue;

?}//內態為1,輸入為1時,輸出為0,下一內態為10

if(s==10&&a[i]==0)

{ a[i]=1;

s=11;

for(j=0;j<22;j++)

{

cout?<<a[j];}

cout<<"??";

?

continue;

}//內態為10,輸入為0時,輸出為1,下一內態為11

if(s==11&&a[i]==0)

{

a[i]=1;

s=0;

for(j=0;j<23;j++)

{

?

cout?<<a[j];

}//內態為11,輸入為0時,輸出為1,下一內態為0

cout<<"??";

break:

}

}

}

? ? ? ?本程序是以書上的圖靈機運行過程為最開始的模板,存在十進制數轉二進制數,二進制數轉化為圖靈機編碼的過程,整個過程比較流暢,但由于并非用字符串來完成會有一些在數組取之上的問題,在這個問題上必須嚴格把關,如果不注意,就會將機子上隨機產生的亂碼作為你前面數字輸入完成后的占位所用的數字。會對自己的整個程序結果造成影響。

??

總結

以上是生活随笔為你收集整理的图灵机的编程实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。