文法分析中推导的建立(带一点点美化:))

来源:互联网 发布:vivo清除所有数据后果 编辑:程序博客网 时间:2024/05/16 12:49

开发环境是Win-TC1.91版,Win-TC的兼容性真不好说呢~~~~~~~~~

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#define maxsize 15
#define closegr closegraph
struct RuleNode   /*存储规则右边的数据结构*/
{
    char symbol;
    struct RuleNode *nextRule;
    struct RuleNode *next;
};
struct RuleBegin  /*存储规则左边的数据结构*/
{
    char beginsymbol;
    struct RuleNode *equal;
};
struct Infer    /*推导过程中的存储结构*/
{
    char symbol;
    struct Infer *next;
};
struct InferBegin    /*指向推导过程中的得出的各个表达式*/
{
    struct Infer *equal;
    struct InferBegin *next;
};
void RuleBuilder(struct RuleBegin *Rule)           /*对每一条规则进行存储*/
{
    struct RuleNode *newRule;
    struct RuleNode *nowRule;
    struct RuleNode *firstRule;
    char input;
    printf("/tPlease input the derivative rule with the end #:");
    input=getchar();
    input=getchar();
    Rule->beginsymbol=input;
    input=getchar();
    input=getchar();
    newRule=(struct RuleNode*)malloc(sizeof(struct RuleNode));
    newRule->symbol=input;
    Rule->equal=newRule;
    firstRule=newRule;
    nowRule=newRule;
    newRule=(struct RuleNode*)malloc(sizeof(struct RuleNode));
    nowRule->next=newRule;
    input=getchar();
    while(input!='#')
    {
        if(input!='|');
        {
            newRule->symbol=input;
            nowRule=newRule;
            newRule=(struct RuleNode*)malloc(sizeof(struct RuleNode));
            nowRule->next=newRule;
        }
        if(input=='|')
        {
            nowRule->next=NULL;
            newRule=(struct RuleNode*)malloc(sizeof(struct RuleNode));
            firstRule->nextRule=newRule;
            firstRule=newRule;
        }
        input=getchar();
    }
    newRule->next=NULL;
    firstRule->nextRule=NULL;
}
void RuleShow(struct RuleBegin *Rule[],int n)      /*对规则进行输出*/
{
    struct RuleNode *nextRule;
    struct RuleNode *firstRule;
    int i;
    for(i=0;i<n;i++)
    {
        printf("/n/t");
        printf("%c::=",Rule[i]->beginsymbol);
        nextRule=Rule[i]->equal;
        firstRule=nextRule;
        while(nextRule->next!=NULL)
        {
            printf("%c",nextRule->symbol);
            nextRule=nextRule->next;
        }
        while(firstRule->nextRule!=NULL)
        {
            printf("|");
            firstRule=firstRule->nextRule;
            nextRule=firstRule;
            while(nextRule->next!=NULL)
            {
                printf("%c",nextRule->symbol);
                nextRule=nextRule->next;
            }
        }

    }
}
void JudgeThingInput(struct InferBegin *goal)      /*输入目标表达式*/
{
    struct Infer *p,*q,*temp;
    char c;
    printf("/n/tPlease input the string with the end #:");
    c=getchar();                                               /*输入中的一些修正*/
    c=getchar();
    p=(struct Infer*)malloc(sizeof(struct Infer));
    goal->equal=p;
    while(c!='#')
    {
        p->symbol=c;
        q=(struct Infer*)malloc(sizeof(struct Infer));
        p->next=q;
        temp=p;
        p=q;
        c=getchar();
    }
    temp->next=NULL;
}
struct RuleNode *IsChoose(struct RuleBegin *Rule)     /*对一条推导规则是否有分支进行判断并提供用户以选择,返回应该使用的规则*/
{
    struct RuleNode *begin;
    struct RuleNode *choice[maxsize];
    struct RuleNode *temp;
    int control=1;
    int ch;
    begin=Rule->equal;
    if(begin->nextRule==NULL)
    {
        return begin;
    }
    else
    {
        while(begin!=NULL)
        {
            printf("%d.",control);
            choice[control]=begin;
            temp=choice[control];
            printf("%c=>",Rule->beginsymbol);
            while(temp->next!=NULL)
            {
                printf("%c",temp->symbol);
                temp=temp->next;
            }
            printf("/n");
            begin=begin->nextRule;
            control++;
        }
        printf("Please input your choice:/t");
        scanf("%d",&ch);
        return choice[ch];
    }
}
int IsFinal(char c,struct RuleBegin *Rule[],int RuleNumber)     /*判断一个符号是不是终结符号,0表示不是,1表示是*/
{
    int i;
    for(i=0;i<RuleNumber;i++)
    {
        if(c==Rule[i]->beginsymbol)
        {
            return 0;
        }
    }
    return 1;
}
int IsAllFinal(struct InferBegin *c,struct RuleBegin *Rule[],int RuleNumber)      /*判断是否已经全部是终端结点,0表示不是,1表示是*/
{
    struct Infer *see;
    int i;
    see=c->equal;
    while(c!=NULL)
    {
        i=IsFinal(see->symbol,Rule,RuleNumber);
        if(i==0) return 0;
        see=see->next;
    }
    return 1;
}
void InferShow(struct InferBegin *infer,struct Infer *color)         /*输出推导的过程*/
{
    struct Infer *show;
    int i=0;
    show=infer->equal;
    printf("%c",show->symbol);
    while(infer->next!=NULL)
    {
        infer=infer->next;
        i++;
        if(i%3==0)
        {
            printf("/n");
        }
        printf("=>");
        show=infer->equal;
        while(show!=NULL)
        {
            printf("%c",show->symbol);
            show=show->next;
        }

    }
    printf("/n");
}
void GoalShow(struct InferBegin *infer)         /*输出要判断的式子*/
{
    struct Infer *show;
    show=infer->equal;
    printf("The goal is:");
    while(show!=NULL)
    {
        printf("%c",show->symbol);
        show=show->next;
    }
}
struct Infer *Compare(struct InferBegin *a,struct InferBegin *b)       /*b是要判断的字符串,比较当前推倒过程中得到的式子是否与目标相同,返回不同的点的真正*/
{
    struct Infer *A,*B;
    B=b->equal;
    A=a->equal;
    while(A->symbol==B->symbol)
    {
        if(A->next==NULL||B->next==NULL)
        {
            break;
        }
        A=A->next;
        B=B->next;
    }
    return A;
}
void nizhi(struct InferBegin *head)
{
    struct Infer *p,*s;
    p=head->equal;
    head->equal=NULL;
    while(p!=NULL)
    {
        s=p->next;
        p->next=head->equal;
        head->equal=p;
        p=s;
    }
}
struct Infer *RightCompare(struct InferBegin *a,struct InferBegin *b)       /*与上面的函数不同之处在于上面是最左推导的模块,这个是最右推导的模块*/
{
    struct Infer *goal;
    nizhi(a);
    nizhi(b);
    goal=Compare(a,b);
    nizhi(a);
    nizhi(b);
    return goal;
}
struct Infer *FindChar(struct InferBegin *a,struct RuleBegin *Rule[],int RuleNumber)        /*一般推导选定推的字符*/
{
    char choose[maxsize];
    struct Infer *find;
    char c;
    int i=0,j,k;
    find=a->equal;
    while(find!=NULL)
    {
        if(IsFinal(find->symbol,Rule,RuleNumber)==0)
        {
            choose[i]=find->symbol;
            i++;
        }
        find=find->next;
    }
    k=0;
    printf("Please choose the char you want to Infer:");
    for(j=0;j<i;j++)
    {
        printf("%d.%c/t",j,choose[j]);
    }
    printf("/nPlease input your choice:");
    scanf("%d",&j);
    find=a->equal;
    while(find!=NULL)
    {
        if(k==j)
        {
            break;
        }
        find=find->next;
        if(IsFinal(find->symbol,Rule,RuleNumber)==0)
        {
            k++;
        }
    }
    return find;
}
int TheSame(struct InferBegin *a,struct InferBegin *b)           /*判断最后得到的式子是否是给定的式子,1为是,0为不是*/
{
    struct Infer *A,*B;
    B=b->equal;
    A=a->equal;
    while(A->symbol==B->symbol)
    {
        if(A==NULL||B==NULL)
        {
            break;
        }
        A=A->next;
        B=B->next;
    }
    if(A==NULL&&B==NULL)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
struct RuleBegin *FindRule(char c,struct RuleBegin *Rule[],int RuleNumber)         /*指出要应用哪一条规则*/
{
    int i;
    for(i=0;i<RuleNumber;i++)
    {
        if(c==Rule[i]->beginsymbol)
        {
            return Rule[i];
        }
    }
}
void drawmat(char *mat,int matsize,int x,int y,int color)
/*依次:字模指针、点阵大小、起始坐标(x,y)、颜色*/
{
  int i, j, k, n;
  n = (matsize - 1) / 8 + 1;
  for(j = 0; j < matsize; j++)
    for(i = 0; i < n; i++)
      for(k = 0;k < 8; k++)
        if(mat[j * n + i] & (0x80 >> k))  /*测试为1的位则显示*/
          putpixel(x + i * 8 + k, y + j, color);
}
void Infer(struct InferBegin *goal,struct RuleBegin *Rule[],int RuleNumber,int n,char pr[],int gdriver,int gmode)     /*推导的实现,当c为1时候,最左推导,2时,最右推导,3时,一般推导*/
{
    struct InferBegin *inferbegin,*start,*next;
    struct Infer *infer,*see,*second,*p,*q,*find;
    struct RuleNode *use;
    struct RuleBegin *choose;
    int judge,i,print;
    char c;
    char he48H[]={
/* 以下是 '合' 的 48点阵华文新魏 字模,288 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
  0x03,0xC0,0x00,0x00,0x00,0x00,0x03,0x80,
  0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,
  0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,
  0x0F,0x80,0x00,0x00,0x00,0x00,0x1F,0xC0,
  0x00,0x00,0x00,0x00,0x3F,0xE0,0x00,0x00,
  0x00,0x00,0x3F,0xF0,0x00,0x00,0x00,0x00,
  0x70,0x38,0x00,0x00,0x00,0x00,0x70,0x1C,
  0x00,0x00,0x00,0x00,0xE0,0x0E,0x00,0x00,
  0x00,0x01,0xC0,0x03,0x00,0x00,0x00,0x01,
  0x80,0x01,0x80,0x00,0x00,0x03,0x00,0x00,
  0x40,0x00,0x00,0x06,0x00,0x30,0x30,0x00,
  0x00,0x04,0x07,0xF8,0x18,0x00,0x00,0x08,
  0x3F,0xF8,0x0C,0x00,0x00,0x18,0x7F,0xFC,
  0x0F,0x80,0x00,0x30,0x7F,0x00,0x0F,0xE0,
  0x00,0x70,0x40,0x00,0x0F,0xF8,0x00,0xE0,
  0x00,0x00,0x01,0xFC,0x01,0xE0,0x00,0x00,
  0x00,0x00,0x03,0xC0,0x00,0x70,0x00,0x00,
  0x07,0x80,0x07,0xFE,0x00,0x00,0x1C,0x00,
  0x3F,0xFF,0x80,0x00,0x00,0x01,0xF8,0x0F,
  0x80,0x00,0x00,0x03,0xE0,0x0F,0x80,0x00,
  0x00,0x03,0xE0,0x0F,0x00,0x00,0x00,0x01,
  0xE0,0x0F,0x00,0x00,0x00,0x01,0xE0,0x0E,
  0x00,0x00,0x00,0x01,0xE0,0x0C,0x00,0x00,
  0x00,0x00,0xE0,0x1C,0x00,0x00,0x00,0x00,
  0xFF,0xFC,0x00,0x00,0x00,0x00,0x7F,0xFC,
  0x00,0x00,0x00,0x00,0x7F,0xF0,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '法' 的 48点阵华文新魏 字模,288 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
  0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x38,
  0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,
  0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,
  0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x38,
  0x00,0x00,0x00,0x08,0x00,0x38,0x00,0x00,
  0x00,0x0C,0x00,0x38,0x00,0x00,0x00,0x0E,
  0x00,0x38,0x00,0x00,0x00,0x0F,0x00,0x3B,
  0xC0,0x00,0x00,0x0F,0x00,0x3F,0xC0,0x00,
  0x00,0x0F,0x81,0xFF,0xC0,0x00,0x00,0x01,
  0x8F,0xFF,0x00,0x00,0x00,0x00,0x07,0xFE,
  0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,
  0x00,0x00,0x02,0x38,0x00,0x00,0x00,0x40,
  0x00,0x38,0x07,0x00,0x00,0xE0,0x00,0x79,
  0xFF,0x80,0x00,0xE0,0x00,0x7F,0xFF,0x80,
  0x00,0xC0,0x01,0xFF,0xFF,0xC0,0x00,0x80,
  0x1F,0xFE,0x00,0x80,0x00,0x81,0xFF,0xF8,
  0x00,0x00,0x00,0x00,0xE0,0xF0,0x00,0x00,
  0x00,0x00,0x80,0xE0,0x00,0x00,0x01,0x00,
  0x01,0xC0,0x00,0x00,0x01,0x00,0x01,0xC0,
  0x80,0x00,0x01,0x01,0x03,0x82,0x08,0x00,
  0x01,0x01,0x03,0x84,0x08,0x00,0x00,0x02,
  0x07,0xFC,0x0C,0x00,0x00,0x06,0x0F,0xFC,
  0x0C,0x00,0x00,0x0C,0x7F,0xF8,0x7C,0x00,
  0x00,0xFC,0x3F,0xF0,0x3E,0x00,0x00,0x78,
  0x3F,0x00,0x1C,0x00,0x00,0x70,0x18,0x00,
  0x0C,0x00,0x00,0x20,0x00,0x00,0x04,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
char fei48H[]={
/* 以下是 '非' 的 48点阵华文新魏 字模,288 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,
  0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,
  0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x38,
  0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,
  0x00,0x00,0x0C,0x38,0x00,0x00,0x00,0x00,
  0x0C,0x38,0x00,0x00,0x00,0x00,0x0C,0x38,
  0x00,0x00,0x00,0x00,0x0C,0x38,0x0C,0x00,
  0x00,0x00,0x0C,0x39,0xF8,0x00,0x00,0x00,
  0x0C,0x3F,0xE0,0x00,0x00,0x07,0xFC,0x3F,
  0x00,0x00,0x00,0x07,0xFC,0x3C,0x00,0x00,
  0x00,0x00,0x1C,0x38,0x00,0x00,0x00,0x00,
  0x0C,0x38,0x00,0x00,0x00,0x00,0x08,0x38,
  0x00,0x00,0x00,0x00,0x18,0x38,0xF0,0x00,
  0x00,0x03,0xF8,0x3F,0xF0,0x00,0x00,0x0F,
  0x88,0x3F,0x80,0x00,0x00,0x0C,0x0C,0x3E,
  0x00,0x00,0x00,0x00,0x0C,0x38,0x00,0x00,
  0x00,0x00,0x18,0x38,0x00,0x00,0x00,0x00,
  0x78,0x38,0x00,0x00,0x00,0x01,0xF8,0x38,
  0x0F,0x00,0x00,0x07,0xD8,0x3F,0xFF,0x00,
  0x00,0x0F,0x18,0x3F,0xFF,0x80,0x00,0x3E,
  0x18,0x3F,0xFF,0xC0,0x00,0x3C,0x18,0x38,
  0x00,0x00,0x00,0x10,0x38,0x38,0x00,0x00,
  0x00,0x00,0x70,0x38,0x00,0x00,0x00,0x00,
  0x70,0x38,0x00,0x00,0x00,0x00,0xE0,0x38,
  0x00,0x00,0x00,0x01,0x80,0x38,0x00,0x00,
  0x00,0x06,0x00,0x38,0x00,0x00,0x00,0x00,
  0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x38,
  0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,
  0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,
  0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x38,
  0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  /* 以下是 '法' 的 48点阵华文新魏 字模,288 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
  0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x38,
  0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,
  0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,
  0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x38,
  0x00,0x00,0x00,0x08,0x00,0x38,0x00,0x00,
  0x00,0x0C,0x00,0x38,0x00,0x00,0x00,0x0E,
  0x00,0x38,0x00,0x00,0x00,0x0F,0x00,0x3B,
  0xC0,0x00,0x00,0x0F,0x00,0x3F,0xC0,0x00,
  0x00,0x0F,0x81,0xFF,0xC0,0x00,0x00,0x01,
  0x8F,0xFF,0x00,0x00,0x00,0x00,0x07,0xFE,
  0x00,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,
  0x00,0x00,0x02,0x38,0x00,0x00,0x00,0x40,
  0x00,0x38,0x07,0x00,0x00,0xE0,0x00,0x79,
  0xFF,0x80,0x00,0xE0,0x00,0x7F,0xFF,0x80,
  0x00,0xC0,0x01,0xFF,0xFF,0xC0,0x00,0x80,
  0x1F,0xFE,0x00,0x80,0x00,0x81,0xFF,0xF8,
  0x00,0x00,0x00,0x00,0xE0,0xF0,0x00,0x00,
  0x00,0x00,0x80,0xE0,0x00,0x00,0x01,0x00,
  0x01,0xC0,0x00,0x00,0x01,0x00,0x01,0xC0,
  0x80,0x00,0x01,0x01,0x03,0x82,0x08,0x00,
  0x01,0x01,0x03,0x84,0x08,0x00,0x00,0x02,
  0x07,0xFC,0x0C,0x00,0x00,0x06,0x0F,0xFC,
  0x0C,0x00,0x00,0x0C,0x7F,0xF8,0x7C,0x00,
  0x00,0xFC,0x3F,0xF0,0x3E,0x00,0x00,0x78,
  0x3F,0x00,0x1C,0x00,0x00,0x70,0x18,0x00,
  0x0C,0x00,0x00,0x20,0x00,0x00,0x04,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
char zuo32K[]={
/* 以下是 '最' 的 32点阵楷体_GB2312 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x10,0x00,0x00,0x00,0xCC,0x00,
  0x00,0x60,0x0C,0x00,0x00,0x40,0x08,0x00,
  0x00,0x01,0x80,0x00,0x00,0x00,0x10,0x00,
  0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
  0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x1F,0xC0,0x00,0x07,0x80,0x00,
  0x01,0x80,0x00,0x00,0x00,0x08,0x00,0x00,
  0x00,0x08,0x04,0x00,0x00,0x08,0x26,0x00,
  0x00,0x08,0x06,0x00,0x00,0x08,0x04,0x00,
  0x00,0x08,0x00,0x00,0x01,0xC8,0x08,0x00,
  0x00,0x08,0x10,0x00,0x00,0x08,0x18,0x00,
  0x00,0x08,0x24,0x00,0x00,0x48,0x42,0x00,
  0x02,0x08,0x01,0x80,0x18,0x08,0x00,0xF0,
  0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,
  0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '左' 的 32点阵楷体_GB2312 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,
  0x00,0x00,0x80,0x00,0x00,0x01,0x80,0x00,
  0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
  0x00,0x01,0x00,0x00,0x00,0x03,0x0F,0x80,
  0x00,0x02,0xF0,0x00,0x00,0x1E,0x00,0x00,
  0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,
  0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,
  0x00,0x08,0x00,0x00,0x00,0x10,0x1E,0x00,
  0x00,0x01,0xE0,0x00,0x00,0x20,0x40,0x00,
  0x00,0x40,0x60,0x00,0x00,0x00,0x60,0x00,
  0x00,0x80,0x60,0x00,0x01,0x00,0x60,0x00,
  0x02,0x00,0x60,0x00,0x00,0x00,0x61,0xC0,
  0x00,0x00,0xFF,0xF0,0x00,0xF8,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '推' 的 32点阵楷体_GB2312 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x40,0x00,0x00,0x00,0x40,0x30,0x00,
  0x00,0x40,0x20,0x00,0x00,0x40,0x20,0x00,
  0x00,0x40,0x01,0x00,0x00,0x40,0x40,0x80,
  0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,
  0x00,0x51,0x03,0x80,0x00,0xC0,0x00,0x00,
  0x0C,0x40,0x81,0x00,0x00,0x40,0x81,0x00,
  0x00,0x40,0x80,0xC0,0x00,0x40,0x88,0x00,
  0x00,0x40,0x80,0x00,0x00,0x40,0x80,0x00,
  0x00,0xC0,0x81,0xE0,0x02,0x40,0x88,0x00,
  0x0C,0x40,0x80,0x00,0x70,0x40,0x80,0x00,
  0x00,0x40,0x80,0x00,0x00,0x40,0x81,0xFC,
  0x00,0x40,0x80,0x00,0x00,0x40,0x80,0x00,
  0x01,0xC0,0x80,0x00,0x00,0xC0,0x80,0x00,
  0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '导' 的 32点阵楷体_GB2312 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x01,0xF0,0x00,
  0x00,0x40,0x20,0x00,0x00,0x40,0x00,0x00,
  0x00,0x40,0x40,0x00,0x00,0x40,0xC0,0x00,
  0x00,0x7E,0x00,0x00,0x00,0x40,0x00,0x00,
  0x00,0x40,0x00,0x00,0x00,0x00,0x02,0x00,
  0x00,0x20,0x07,0x00,0x00,0x1F,0xFC,0x00,
  0x00,0x00,0xC0,0x00,0x00,0x00,0x40,0x00,
  0x00,0x00,0x40,0x60,0x00,0x00,0x7F,0xF8,
  0x00,0x3C,0x40,0x00,0x3E,0x00,0x40,0x00,
  0x00,0x00,0x40,0x00,0x00,0x40,0x40,0x00,
  0x00,0x60,0x40,0x00,0x00,0x20,0x40,0x00,
  0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,
  0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,
  0x00,0x03,0xC0,0x00,0x00,0x01,0xC0,0x00,
  0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,
};
char you32K[]={
/* 以下是 '最' 的 32点阵楷体_GB2312 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x10,0x00,0x00,0x00,0xCC,0x00,
  0x00,0x60,0x0C,0x00,0x00,0x40,0x08,0x00,
  0x00,0x01,0x80,0x00,0x00,0x00,0x10,0x00,
  0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,
  0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x1F,0xC0,0x00,0x07,0x80,0x00,
  0x01,0x80,0x00,0x00,0x00,0x08,0x00,0x00,
  0x00,0x08,0x04,0x00,0x00,0x08,0x26,0x00,
  0x00,0x08,0x06,0x00,0x00,0x08,0x04,0x00,
  0x00,0x08,0x00,0x00,0x01,0xC8,0x08,0x00,
  0x00,0x08,0x10,0x00,0x00,0x08,0x18,0x00,
  0x00,0x08,0x24,0x00,0x00,0x48,0x42,0x00,
  0x02,0x08,0x01,0x80,0x18,0x08,0x00,0xF0,
  0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,
  0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
  /* 以下是 '右' 的 32点阵楷体_GB2312 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,
  0x00,0x00,0x80,0x00,0x00,0x01,0x80,0x00,
  0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
  0x00,0x03,0x1F,0xF0,0x00,0x07,0xC0,0x00,
  0x03,0xE6,0x00,0x00,0x04,0x04,0x00,0x00,
  0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,
  0x00,0x08,0x00,0x00,0x00,0x10,0x00,0x00,
  0x00,0x10,0x06,0x00,0x00,0x20,0xC3,0x80,
  0x00,0x58,0x03,0x00,0x00,0x98,0x03,0x00,
  0x00,0x08,0x02,0x00,0x00,0x08,0x02,0x00,
  0x00,0x08,0x02,0x00,0x08,0x08,0x04,0x00,
  0x00,0x08,0x7E,0x00,0x00,0x08,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '推' 的 32点阵楷体_GB2312 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x40,0x00,0x00,0x00,0x40,0x30,0x00,
  0x00,0x40,0x20,0x00,0x00,0x40,0x20,0x00,
  0x00,0x40,0x01,0x00,0x00,0x40,0x40,0x80,
  0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,
  0x00,0x51,0x03,0x80,0x00,0xC0,0x00,0x00,
  0x0C,0x40,0x81,0x00,0x00,0x40,0x81,0x00,
  0x00,0x40,0x80,0xC0,0x00,0x40,0x88,0x00,
  0x00,0x40,0x80,0x00,0x00,0x40,0x80,0x00,
  0x00,0xC0,0x81,0xE0,0x02,0x40,0x88,0x00,
  0x0C,0x40,0x80,0x00,0x70,0x40,0x80,0x00,
  0x00,0x40,0x80,0x00,0x00,0x40,0x81,0xFC,
  0x00,0x40,0x80,0x00,0x00,0x40,0x80,0x00,
  0x01,0xC0,0x80,0x00,0x00,0xC0,0x80,0x00,
  0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '导' 的 32点阵楷体_GB2312 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x01,0xF0,0x00,
  0x00,0x40,0x20,0x00,0x00,0x40,0x00,0x00,
  0x00,0x40,0x40,0x00,0x00,0x40,0xC0,0x00,
  0x00,0x7E,0x00,0x00,0x00,0x40,0x00,0x00,
  0x00,0x40,0x00,0x00,0x00,0x00,0x02,0x00,
  0x00,0x20,0x07,0x00,0x00,0x1F,0xFC,0x00,
  0x00,0x00,0xC0,0x00,0x00,0x00,0x40,0x00,
  0x00,0x00,0x40,0x60,0x00,0x00,0x7F,0xF8,
  0x00,0x3C,0x40,0x00,0x3E,0x00,0x40,0x00,
  0x00,0x00,0x40,0x00,0x00,0x40,0x40,0x00,
  0x00,0x60,0x40,0x00,0x00,0x20,0x40,0x00,
  0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,
  0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,
  0x00,0x03,0xC0,0x00,0x00,0x01,0xC0,0x00,
  0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,
};
char yi32K[]={
/* 以下是 '一' 的 32点阵楷体_GB2312 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x60,0x00,0x00,0x3F,0xF8,
  0x01,0xFF,0x80,0x00,0x0F,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '般' 的 32点阵楷体_GB2312 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
  0x00,0x20,0x00,0x00,0x00,0x40,0x02,0x00,
  0x00,0x00,0x66,0x00,0x00,0x00,0x42,0x00,
  0x00,0x18,0x40,0x00,0x02,0x08,0x40,0x00,
  0x02,0x08,0x40,0x00,0x02,0x08,0x42,0x00,
  0x02,0x08,0x01,0xE0,0x02,0x48,0x80,0x00,
  0x02,0x48,0x00,0x00,0x02,0x08,0x00,0x00,
  0x02,0x18,0x06,0x00,0x03,0x08,0x43,0x00,
  0x72,0x08,0x02,0x00,0x00,0x08,0x02,0x00,
  0x00,0x48,0x02,0x00,0x04,0x48,0x24,0x00,
  0x04,0x08,0x0C,0x00,0x00,0x08,0x08,0x00,
  0x00,0x08,0x12,0x00,0x00,0x08,0x23,0x00,
  0x00,0x08,0x01,0xE0,0x00,0x18,0x00,0xFC,
  0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '推' 的 32点阵楷体_GB2312 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x40,0x00,0x00,0x00,0x40,0x30,0x00,
  0x00,0x40,0x20,0x00,0x00,0x40,0x20,0x00,
  0x00,0x40,0x01,0x00,0x00,0x40,0x40,0x80,
  0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,
  0x00,0x51,0x03,0x80,0x00,0xC0,0x00,0x00,
  0x0C,0x40,0x81,0x00,0x00,0x40,0x81,0x00,
  0x00,0x40,0x80,0xC0,0x00,0x40,0x88,0x00,
  0x00,0x40,0x80,0x00,0x00,0x40,0x80,0x00,
  0x00,0xC0,0x81,0xE0,0x02,0x40,0x88,0x00,
  0x0C,0x40,0x80,0x00,0x70,0x40,0x80,0x00,
  0x00,0x40,0x80,0x00,0x00,0x40,0x81,0xFC,
  0x00,0x40,0x80,0x00,0x00,0x40,0x80,0x00,
  0x01,0xC0,0x80,0x00,0x00,0xC0,0x80,0x00,
  0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '导' 的 32点阵楷体_GB2312 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x01,0xF0,0x00,
  0x00,0x40,0x20,0x00,0x00,0x40,0x00,0x00,
  0x00,0x40,0x40,0x00,0x00,0x40,0xC0,0x00,
  0x00,0x7E,0x00,0x00,0x00,0x40,0x00,0x00,
  0x00,0x40,0x00,0x00,0x00,0x00,0x02,0x00,
  0x00,0x20,0x07,0x00,0x00,0x1F,0xFC,0x00,
  0x00,0x00,0xC0,0x00,0x00,0x00,0x40,0x00,
  0x00,0x00,0x40,0x60,0x00,0x00,0x7F,0xF8,
  0x00,0x3C,0x40,0x00,0x3E,0x00,0x40,0x00,
  0x00,0x00,0x40,0x00,0x00,0x40,0x40,0x00,
  0x00,0x60,0x40,0x00,0x00,0x20,0x40,0x00,
  0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,
  0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,
  0x00,0x03,0xC0,0x00,0x00,0x01,0xC0,0x00,
  0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,
};
    if(n==1)
    {
        setbkcolor(BLUE);
        for(print=0;print<4;print++)
        {
            drawmat(zuo32K+print*128,32,30+print*31,400,WHITE);
        }
    }
    if(n==2)
    {
        setbkcolor(BLUE);
        for(print=0;print<4;print++)
        {
            drawmat(you32K+print*128,32,30+print*31,400,WHITE);
        }
    }
    if(n==3)
    {
        setbkcolor(BLUE);
        for(print=0;print<4;print++)
        {
            drawmat(yi32K+print*128,32,30+print*31,400,WHITE);
        }
    }
    printf("The derivative process is:/n");
    inferbegin=(struct InferBegin*)malloc(sizeof(struct InferBegin));
    infer=(struct Infer*)malloc(sizeof(struct Infer));
    infer->symbol=Rule[0]->beginsymbol;
    c=infer->symbol;
    infer->next=NULL;
    inferbegin->equal=infer;
    start=inferbegin;
    if(n==3)
    {
        see=infer;
    }
    while(IsAllFinal(inferbegin,Rule,RuleNumber)!=1)
    {
        if(n==3)
        {
            c=see->symbol;
        }
        next=(struct InferBegin*)malloc(sizeof(struct InferBegin));
        if(n==1)
        {
            see=Compare(inferbegin,goal);
        }
        if(n==2)
        {
            see=RightCompare(inferbegin,goal);
        }
        inferbegin->next=next;
        infer=(struct Infer*)malloc(sizeof(struct Infer));
        next->equal=infer;
        p=inferbegin->equal;
        next->next=NULL;
        if(p!=see)
        {
            infer->symbol=p->symbol;
            while(p->next!=see)
            {
                p=p->next;
                q=(struct Infer*)malloc(sizeof(struct Infer));
                infer->next=q;
                infer=infer->next;
                infer->symbol=p->symbol;
            }
        }
        choose=FindRule(c,Rule,RuleNumber);
        use=IsChoose(choose);
        second=infer;
        while(use->next!=NULL)
        {
            infer=(struct Infer*)malloc(sizeof(struct Infer));
            infer->symbol=use->symbol;
            if(p==see)
            {
                next->equal=infer;
                p=p->next;
                p=p->next;
                second=infer;
            }
            else
            {
                second->next=infer;
                second=infer;
            }
            use=use->next;
        }
        while(see->next!=NULL)
        {
            see=see->next;
            infer=(struct Infer*)malloc(sizeof(struct Infer));
            infer->symbol=see->symbol;
            second->next=infer;
            second=infer;
        }
        second->next=NULL;
        next->next=NULL;
        clrscr();
        setbkcolor(BLUE);
        for(print=0;print<10;print++)
        {
            drawmat(pr+print*128,32,600,20+print*31,WHITE);
        }
        if(n==1)
        {
            setbkcolor(BLUE);
            for(print=0;print<4;print++)
            {
                drawmat(zuo32K+print*128,32,30+print*31,400,WHITE);
            }
        }
        if(n==2)
        {  
            setbkcolor(BLUE);
            for(print=0;print<4;print++)
            {
                drawmat(you32K+print*128,32,30+print*31,400,WHITE);
            }
        }
        if(n==3)
        {
            setbkcolor(BLUE);
            for(print=0;print<4;print++)
            {
                drawmat(yi32K+print*128,32,30+print*31,400,WHITE);
            }
        }
        InferShow(start,see);
        if(n==2)
        {
            nizhi(next);
        }
        p=next->equal;
        while(p!=NULL)
        {
            if(IsFinal(p->symbol,Rule,RuleNumber)==0)
            {
                c=p->symbol;
                break;
            }
            p=p->next;
        }
        if(n==2)
        {
            nizhi(next);
        }
        inferbegin=inferbegin->next;
        judge=TheSame(inferbegin,goal);
        if(judge==1)
        {
            break;
        }
        find=inferbegin->equal;
        i=0;
        while(find!=NULL)
        {
            if(IsFinal(find->symbol,Rule,RuleNumber)==0)
            {
                i++;
            }
            find=find->next;
        }
        if(i==0)
        {
            break;
        }
        if(n==3)
        {
            see=FindChar(next,Rule,RuleNumber);
            while(see->symbol=='('||see->symbol=='i'||see->symbol=='*'||see->symbol=='+'||see->symbol=='-'||see->symbol=='/')
            {
                see=see->next;
            }
        }
    }
    judge=TheSame(inferbegin,goal);
    if(judge==1)
    {
        for(print=0;print<2;print++)
        {
            drawmat(he48H+print*288,48,100+print*47,100,GREEN);
        }
        if(n==1)
        {
            setbkcolor(BLUE);
            for(print=0;print<4;print++)
            {
                drawmat(zuo32K+print*128,32,30+print*31,400,WHITE);
            }
        }
        if(n==2)
        {  
            setbkcolor(BLUE);
            for(print=0;print<4;print++)
            {
                drawmat(you32K+print*128,32,30+print*31,400,WHITE);
            }
        }
        if(n==3)
        {
            setbkcolor(BLUE);
            for(print=0;print<4;print++)
            {
                drawmat(yi32K+print*128,32,30+print*31,400,WHITE);
            }
        }
    }
    else
    {
        for(print=0;print<2;print++)
        {
            drawmat(fei48H+print*288,48,100+print*47,100,RED);
        }
        if(n==1)
        {
            setbkcolor(BLUE);
            for(print=0;print<4;print++)
            {
                drawmat(zuo32K+print*128,32,30+print*31,400,WHITE);
            }
        }
        if(n==2)
        {  
            setbkcolor(BLUE);
            for(print=0;print<4;print++)
            {
                drawmat(you32K+print*128,32,30+print*31,400,WHITE);
            }
        }
        if(n==3)
        {
            setbkcolor(BLUE);
            for(print=0;print<4;print++)
            {
                drawmat(yi32K+print*128,32,30+print*31,400,WHITE);
            }
        }
    }
}

main()
{
    int gdriver,gmode;
    int i,n,c,p;
    struct RuleBegin *Rule[maxsize];
    struct InferBegin *goal;
    char yu32H[]={
/* 以下是 '语' 的 32点阵华文新魏 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,
  0x00,0x40,0xFF,0x00,0x00,0xC0,0xFC,0x00,
  0x00,0xE0,0x18,0x00,0x00,0x60,0x18,0x00,
  0x00,0x00,0x18,0x00,0x00,0x00,0x7F,0x80,
  0x00,0x03,0xE7,0x80,0x00,0x40,0x47,0x00,
  0x01,0xE0,0x47,0x00,0x1F,0xE0,0x07,0xE0,
  0x0F,0xC0,0xFF,0xF0,0x0D,0x81,0xFF,0xF0,
  0x00,0x8E,0x00,0x00,0x00,0x80,0x0C,0x00,
  0x00,0x80,0xFF,0x00,0x01,0x83,0x83,0x80,
  0x01,0x93,0x83,0x00,0x00,0xE1,0x86,0x00,
  0x00,0xC1,0x8E,0x00,0x00,0x40,0xFE,0x00,
  0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '法' 的 32点阵华文新魏 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,
  0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,
  0x00,0x00,0x30,0x00,0x00,0x00,0x20,0x00,
  0x00,0x80,0x20,0x00,0x00,0xC0,0x20,0x00,
  0x00,0xE0,0x3E,0x00,0x00,0xE0,0xFC,0x00,
  0x00,0x03,0xF8,0x00,0x00,0x01,0xE0,0x00,
  0x00,0x00,0x60,0x00,0x03,0x00,0x77,0xE0,
  0x02,0x00,0x7F,0xE0,0x02,0x07,0xF0,0x00,
  0x00,0x18,0x60,0x00,0x00,0x00,0xC0,0x00,
  0x04,0x00,0x82,0x00,0x04,0x01,0x80,0x00,
  0x00,0x03,0xF0,0x80,0x00,0x47,0xF0,0x80,
  0x00,0x8F,0xE1,0xC0,0x03,0x06,0x00,0x80,
  0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '分' 的 32点阵华文新魏 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x80,0x00,0x00,0x00,0xC0,0x00,
  0x00,0x00,0x40,0x00,0x00,0x00,0x20,0x00,
  0x00,0x00,0x10,0x00,0x00,0x0C,0x10,0x00,
  0x00,0x08,0x08,0x00,0x00,0x18,0x04,0x00,
  0x00,0x10,0x02,0x00,0x00,0x20,0x03,0x00,
  0x00,0x20,0x03,0xC0,0x00,0x41,0xFF,0xF0,
  0x00,0xCF,0x9C,0xF8,0x01,0x8F,0x0C,0x1E,
  0x02,0x03,0x0C,0x00,0x00,0x02,0x08,0x00,
  0x00,0x04,0x08,0x00,0x00,0x04,0x18,0x00,
  0x00,0x08,0x18,0x00,0x00,0x18,0x30,0x00,
  0x00,0x20,0x30,0x00,0x00,0x41,0xE0,0x00,
  0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '析' 的 32点阵华文新魏 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,
  0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,
  0x00,0x20,0x00,0x00,0x00,0x60,0x0C,0x00,
  0x00,0x60,0x38,0x00,0x00,0x78,0xF0,0x00,
  0x00,0xF8,0xC0,0x00,0x0F,0xF0,0x80,0x00,
  0x0F,0xE0,0x80,0x00,0x08,0x60,0x87,0xC0,
  0x00,0xF0,0xFF,0xC0,0x00,0xF8,0x8C,0x00,
  0x01,0xE0,0x0C,0x00,0x03,0x61,0x0C,0x00,
  0x04,0x60,0x04,0x00,0x08,0x60,0x04,0x00,
  0x10,0x62,0x04,0x00,0x20,0x64,0x04,0x00,
  0x00,0x60,0x04,0x00,0x00,0x60,0x04,0x00,
  0x00,0x60,0x04,0x00,0x00,0x20,0x04,0x00,
  0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,
  0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '中' 的 32点阵华文新魏 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x01,0xC0,0x00,0x00,0x01,0xC0,0x00,
  0x00,0x01,0xC0,0x00,0x00,0x01,0xC0,0x00,
  0x00,0x01,0xC0,0x00,0x00,0x01,0xCE,0x00,
  0x00,0x03,0xFF,0x80,0x00,0x3C,0x81,0xE0,
  0x00,0xE0,0x81,0xE0,0x00,0xE0,0x81,0xC0,
  0x00,0xE0,0x81,0x80,0x00,0x60,0x81,0x00,
  0x00,0x60,0x9F,0x00,0x00,0x27,0xFF,0x00,
  0x00,0x3F,0x80,0x00,0x00,0x01,0x80,0x00,
  0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,
  0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,
  0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,
  0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,
  0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,
  0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '推' 的 32点阵华文新魏 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x10,0x18,0x00,0x00,0x10,0x10,0x00,
  0x00,0x10,0x10,0x00,0x00,0x10,0x21,0x80,
  0x00,0x10,0x23,0x00,0x00,0x10,0x40,0x00,
  0x00,0x10,0x40,0x00,0x00,0x1C,0x80,0xC0,
  0x00,0xFC,0x8F,0x80,0x03,0xF1,0xFE,0x00,
  0x03,0xB3,0xC6,0x00,0x00,0x35,0x87,0x80,
  0x00,0x31,0x9E,0x00,0x00,0x31,0x9E,0x00,
  0x00,0xF1,0x87,0x80,0x01,0xB1,0x8F,0x00,
  0x03,0x11,0x9E,0x00,0x0E,0x11,0x86,0x00,
  0x0C,0x11,0x87,0xF0,0x00,0x11,0x9F,0xF0,
  0x00,0x11,0xF0,0x00,0x00,0x71,0x80,0x00,
  0x00,0x11,0x80,0x00,0x00,0x01,0x80,0x00,
  0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '导' 的 32点阵华文新魏 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,
  0x00,0x1F,0xF8,0x00,0x00,0x1F,0xF0,0x00,
  0x00,0x18,0x30,0x00,0x00,0x18,0x30,0x00,
  0x00,0x18,0x40,0x00,0x00,0x18,0x00,0x00,
  0x00,0x18,0x00,0x00,0x00,0x18,0x06,0x00,
  0x00,0x0F,0xFC,0x00,0x00,0x07,0xF0,0x00,
  0x00,0x00,0x70,0x00,0x00,0x00,0x7F,0xE0,
  0x00,0x00,0xFF,0xF0,0x00,0x1F,0xF0,0x00,
  0x07,0xF0,0x30,0x00,0x00,0x30,0x30,0x00,
  0x00,0x18,0x30,0x00,0x00,0x10,0x30,0x00,
  0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,
  0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,
  0x00,0x07,0xF0,0x00,0x00,0x01,0xF0,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '的' 的 32点阵华文新魏 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x0C,0x00,0x00,0x10,0x08,0x00,
  0x00,0x18,0x10,0x00,0x00,0x30,0x00,0x00,
  0x00,0x60,0x20,0x00,0x00,0xC0,0x40,0x00,
  0x00,0x80,0x47,0x80,0x01,0x80,0xFF,0xC0,
  0x01,0x04,0x81,0xC0,0x03,0x86,0x00,0xC0,
  0x07,0x86,0x00,0xC0,0x01,0xE6,0x30,0xC0,
  0x01,0xC6,0x10,0xC0,0x01,0x86,0x00,0xC0,
  0x01,0x86,0x00,0x80,0x01,0xE6,0x00,0x80,
  0x01,0xE6,0x01,0x80,0x00,0xFE,0x01,0x80,
  0x00,0x9C,0x01,0x00,0x00,0x04,0x1F,0x00,
  0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '建' 的 32点阵华文新魏 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,
  0x00,0x00,0x60,0x00,0x00,0x00,0x7E,0x00,
  0x00,0x01,0xE2,0x00,0x00,0x00,0x62,0x00,
  0x00,0x00,0x67,0x80,0x00,0x30,0xE4,0x40,
  0x01,0x98,0x64,0x00,0x00,0x10,0x64,0x00,
  0x00,0x00,0xF8,0x00,0x00,0x00,0x60,0x00,
  0x00,0x40,0x78,0x00,0x00,0x61,0xE0,0x00,
  0x00,0x20,0x60,0x00,0x00,0x20,0x7F,0x00,
  0x00,0x23,0xE0,0x00,0x07,0xE0,0x40,0x00,
  0x00,0x70,0x40,0x00,0x00,0x47,0x40,0x00,
  0x01,0x80,0x60,0x00,0x02,0x00,0x18,0x00,
  0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xF8,
  0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/* 以下是 '立' 的 32点阵华文新魏 字模,128 byte */
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x01,0x80,0x00,0x00,0x01,0xC0,0x00,
  0x00,0x01,0xC0,0x00,0x00,0x00,0x40,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x1C,0x00,0x00,0x00,0xFC,0x00,
  0x00,0x3F,0xF0,0x00,0x00,0x1F,0x80,0x00,
  0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,
  0x00,0x02,0x30,0x00,0x00,0x04,0x30,0x00,
  0x00,0x18,0x60,0x00,0x00,0x18,0x40,0x00,
  0x00,0x00,0xC0,0x00,0x00,0x01,0xFE,0x40,
  0x00,0x03,0xFF,0xE0,0x00,0x1F,0xFF,0xE0,
  0x00,0xF0,0x00,0x20,0x06,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
    gdriver=DETECT;
    registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行*/
    initgraph(&gdriver, &gmode, "");
    initgraph(&gdriver,&gmode,"");
        setbkcolor(BLUE);
        for(p=0;p<10;p++)
        {
            drawmat(yu32H+p*128,32,600,20+p*31,WHITE);
        }
        setcolor(12);
        printf("/n/n/t/t/t");
        settextstyle(1,0,10);
        outtextxy(20,20,"Please input the derivative rule's number:");
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            Rule[i]=(struct RuleBegin*)malloc(sizeof(struct RuleBegin));
            RuleBuilder(Rule[i]);
        }
        printf("/tThe derivative rule is:");
        RuleShow(Rule,n);
        goal=(struct InferBegin*)malloc(sizeof(struct InferBegin));
        JudgeThingInput(goal);
        initgraph(&gdriver,&gmode,"");
        setbkcolor(BLUE);
        for(p=0;p<10;p++)
        {
            drawmat(yu32H+p*128,32,600,20+p*31,WHITE);
        }
        GoalShow(goal);
        printf("/n");
        printf("Please input the way of derivative:/n1.Left derivative/n2.Right derivative/n3.Normal derivative/t");
        scanf("%d",&c);
        clrscr();
        initgraph(&gdriver,&gmode,"");
        setbkcolor(BLUE);
        for(p=0;p<10;p++)
        {
            drawmat(yu32H+p*128,32,600,20+p*31,WHITE);
        }
        Infer(goal,Rule,n,c,yu32H,gdriver,gmode);

    getch();
    closegr();
}
 

原创粉丝点击