• 大小: 29.13 KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-08-05
  • 语言: 其他
  • 标签: TM  图灵机  

资源简介

这是一个简单的单带图灵机,用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


评论

共有 条评论