資源簡介
這是一個簡單的單帶圖靈機,用C++編寫,判定輸入是否屬于語言:n個0后跟n個1
代碼片段和文件信息
#include?“stdio.h“
#define?N?100
void?init_tape(char?tape[]);
int?deciderM(char?tape[]);
void?main(void)
{
??int?d=0;
??char?tape[N];
??printf(“*****************************\n“);
??printf(“L={n個0后跟n個1n>=0}\n“);
??printf(“*****************************\n“);
??init_tape(tape);
??printf(“Please?input?your?string:?\n“);
??scanf(“%s“&tape);
??
??d=deciderM(tape);
??if(d==0)?printf(“Your?input?string?is?NOT?in?L\n“);
??if(d==1)?printf(“Your?input?string?is?in?L\n“);
}
void?init_tape(char?tape[]){
??int?i=0;
??for(i=0;i ????tape[i]=‘?‘;
}
int?deciderM(char?tape[]){
/*?Scan?tape?left-to-right?reject?if?0?on?the?right?of?1?*/
??int?i=0j=0;
??if(tape[0]==‘\0‘)?return?1;
??while(tape[i]==‘0‘)
????i++;
??if(tape[i]!=‘1‘?||?i==0)?return?0;
??else?j=i;??/*?to?find?the?first?1?*/
??while(tape[i]==‘1‘)?i++;
?? ??
??if(tape[i]!=‘\0‘)?return?0;
??
??
?/*?Repeat?while?0s1s?on?the?tape:?Scan?tapecrossing?off?one?0one?1*/
??i=0;
??while(tape[i]!=‘\0‘)
??{
????
i=0;
while(tape[i]==‘x‘)?i++;
if(tape[i]==‘0‘)?tape[i]=‘x‘;
if(tape[i]==‘1‘)?return?0;
if(tape[i]==‘\0‘)?return?1;
????while(tape[i]==‘x‘?||?tape[i]==‘0‘)?i++;
????if(tape[i]==‘\0‘)?return?0;
????if(tape[i]==‘1‘)?tape[i]=‘x‘;
??}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1279??2007-12-07?21:24??single-tapeTM.cpp
?????文件??????57856??2007-12-07?22:25??程序測試.doc
-----------?---------??----------?-----??----
????????????????59135????????????????????2
- 上一篇:2FSK2PSK信號產生器實驗實驗報告
- 下一篇:保護定值計算軟件.rar
評論
共有 條評論