zoukankan      html  css  js  c++  java
  • 有限自动机的构造与识别203

    #include<stdio.h>
    #define M 100
    char str[M][M];
    void Go(char ch);
    main()
    {
        char ch;
        printf("\n请输入需要识别的字符(以#结束):");
        ch=getchar();
        Go(ch);
    }
    void Go(char ch)
    {
        int i=0,j=0,k,s,n,sum;
        while(ch!='#')
        {
            while(ch=='|')
            {
                str[i][j]='\0';
                j=0;
                i++;
                ch=getchar();
            }
            str[i][j]=ch;
            j++;
            ch=getchar();
        }
        str[i][j]='\0';
        sum=2;
        for(k=0;k<=i;k++)
        {
            s=0;
            n=1;
            while(str[k][s]!='\0')
            {
                if(str[k][s]=='.'||str[k][s]=='*')
                {
                    if(str[k][s]=='.'&&n==1)
                    {
                        n++;
                        printf("\nf(0,%c)=%d\n",str[k][s-1],sum);
                        if(str[k][s+2]=='\0')
                            printf("\nf(%d,%c)=1\n",sum,str[k][s+1]);
                        sum=sum+1;
                    }
                    else if(str[k][s]=='.'&&n!=1)
                    {
                        n++;
                        printf("\nf(%d,%c)=%d\n",sum-1,str[k][s-1],sum);
                        if(str[k][s+2]=='\0')
                            printf("\nf(%d,%c)=1\n",sum,str[k][s+1]);
                        sum=sum+1;
                    }
                    else if(str[k][s]=='*'&&n==1)
                    {
                        n++;
                        printf("\nf(0,~)=%d\n",sum);
                        printf("\nf(%d,%c)=%d\n",sum,str[k][s-1],sum);
                        if(str[k][s+1]=='\0')
                            printf("\nf(%d,~)=1\n",sum);
                        else
                            printf("\nf(%d,~)=%d\n",sum,sum+1);
                        sum=sum+1;
                    }
                    else if(str[k][s]=='*'&&n!=1)
                    {
                        n++;
                        printf("\nf(%d,%c)=%d\n",sum,str[k][s-1],sum);
                        if(str[k][s+1]=='\0')
                            printf("\nf(%d,~)=1\n",sum);
                        else
                            printf("\nf(%d,~)=%d\n",sum,sum+1);
                        sum=sum+1;
                    }
                }
                s++;
            }
        }
    }

  • 相关阅读:
    一个简单的makefile,一次性编译本文件夹下所有的cpp文件
    c++ 最短路两种算法
    C++语言十进制数,CDecimal(未完成)
    C语言面向对象的简便方法
    C语言2048
    C图书借还示例
    Javascript 备忘
    原型与原型链
    css3动画-跳动圈
    学习css3动画
  • 原文地址:https://www.cnblogs.com/cgq520/p/6115396.html
Copyright © 2011-2022 走看看