zoukankan      html  css  js  c++  java
  • 有穷自动机的转换

     1 #include<stdio.h>
     2 main()
     3 {
     4     int i=0,j=0,x=0,y;
     5     int number=2;
     6     int count=0;
     7     char ch;
     8     char a[100][100];
     9     printf("请输入正规式以#结束 :
    ");
    10     printf("^代表空
    ");
    11     printf("|代表或
    ");
    12     ch=getchar();
    13     do
    14     {
    15        if(ch=='|')   
    16         {
    17             a[i][j]='';
    18             j=0;
    19             i++;
    20             ch=getchar();
    21             continue;
    22         }
    23         a[i][j]=ch;
    24         j++;
    25         ch=getchar();
    26     }while(ch!='#');
    27     a[i][j]='';
    28     for(x=0;x<=i;x++)
    29     {
    30         y=0;
    31         count=1;
    32         while(a[x][y]!='')
    33         {
    34             if(a[x][y]=='.')
    35             {
    36 
    37                if(a[x][y]=='.'&& count==1)     
    38                {
    39                  printf("f(0,%c)=%d
    ",a[x][y-1],number);
    40                  if(a[x][y+2]=='')
    41                   printf("f(%d,%c)=1
    ",number,a[x][y+1]);
    42                  number++;
    43                  count=2;
    44                }
    45 
    46             else if(a[x][y]=='.'&& count!=1)
    47                {
    48 
    49                    printf("f(%d,%c)=%d
    ",number-1,a[x][y-1],number);
    50                    if(a[x][y+2]=='')
    51                     printf("f(%d,%c)=1
    ",number,a[x][y+1]);
    52                     number++;
    53             }
    54             }
    55              if(a[x][y]=='*')
    56              {
    57                if(a[x][y]=='*'&& count==1)
    58               {
    59                    printf("f(0,^)=%d
    ",number);
    60                    printf("f(%d,%c)=%d
    ",number,a[x][y-1],number);
    61                    if(a[x][y+1]=='')
    62                     printf("f(%d,^)=1
    ",number);
    63                    else
    64                     printf("f(%d,^)=%d
    ",number,number+1);
    65                    number++;
    66                    count=2;
    67                }
    68 
    69              else if(a[x][y]=='*'&& count!=1)
    70                {
    71 
    72                    printf("f(%d,%c)=%d
    ",number,a[x][y-1],number);
    73                    if(a[x][y+1]=='')
    74                     printf("f(%d,^)=1
    ",number);
    75                    else
    76                     printf("f(%d,^)=%d
    ",number,number+1);
    77                    number++;
    78                }
    79             }
    80             y++;
    81         }
    82     }
    83 
    84 }
  • 相关阅读:
    java学习大方向
    js总结001
    MySQL总结
    快捷键
    java基础总结001
    网络设备的发展与作用(冲突域与广播域)
    二进制&八进制&十六进制之间的快速转换------ 心算&笔算方法总结
    IP地址的定义和划分
    初学Linux基本的命令操作应当记牢
    JDK的下载与安装
  • 原文地址:https://www.cnblogs.com/crx234/p/6188540.html
Copyright © 2011-2022 走看看