⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1my.cpp

📁 基于机器学习的自动逻辑推理机。本程序用归结反演策略实现了命题逻辑系统的自动推理。把要解决的问题作为一个要证明的命题
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        while(p!=NULL)
        {
             if(abs(p->num)>=7)
             { S3.Push(position);q=p; p=p->link; position++;}
             else if(p->num==5)
             {
                  S3.Pop(); b=S3.Pop();
                  S3.Push(position);
                  position++;
                  q=p; p=p->link;
                  f_Letter=1;
             }
             else if(p->num==6)
             {
                  S3.Pop(); b=S3.Pop();
                  S3.Push(position);
                  position++;
                  q=p; p=p->link;
                  f_Letter=1;
                  f_and=1;
             }
        }
        if(f_Letter==0&&f_and==0)
          {   Add_s(hh);  return; }
        else if(q->num==6)
        {
             T_node *head1,*head2,*x,*y,*z;
             x=y=hh;
             head1=hh;
             while(b>0)
             { y=x; x=x->link; b--; }
             y->link=NULL;
             z=head2=x;
             while(x->link!=NULL)
             { z=x; x=x->link;}
             z->link=NULL;
             free(x);
             Plot(head1);
             Plot(head2);

        }
        else
        {
             if(f_and==0)
             {   Add_s(hh);  return;}
             else
                Plot(Assign(hh));
        }

}

//---------------------------------------------------------------------------

T_node * T_Prepare::Assign(T_node *hhh)
{
     T_node *p,*q,*p0,*p1,*p2,*p3;
     T_Stack S5;
     S5.do_empty();
     T_List t_copy1,t_copy2;
     int end;
     int nn=0;
     int position=1;
     int R=0,L=0,M,s1,s2,f,r=0,l=0;
     int a,b,bl,br;
     p=hhh;

     while(p!=NULL)
     { nn++;p=p->link; }
     end=Shell(hhh,nn);

     p=hhh;
     while(end>=1)
     {
             if(abs(p->num)>=7)
             { S5.Push(position); p=p->link; position++; end--;}
             else if(p->num==6)
             {
                  R=S5.Pop(); L=S5.Pop();
                  M=position;
                  S5.Push(position);
                  position++;
                  p=p->link;
                  end--;
              }
              else if(p->num==5)
              {
                  r=S5.Pop();  l=S5.Pop();
                  S5.Push(position);
                  position++;
                  p=p->link;
                  end--;
              }
     }
      p0=p;

      p=hhh;
      b=r-l;  bl=L-l; br=R-L;

      f=S5.Pop();
      if(S5.isempty()==0&&f>=1)
         f=S5.Pop();
      else f=0;
      a=l-f;
      if(r==M)
      {
         if(f==0);
         else
         {
           while(f>1)
           { p=p->link; f--;}
           p1=p;  p=p->link;
         }
         while(a>=1)
         {
               t_copy1.Append(p->num);
               t_copy2.Append(p->num);
               p=p->link;
               a--;
         }
         t_copy1.Append(5);
         t_copy2.Append(5);
         if(f==0) hhh=p;
         else p1->link=p;

         while(bl>1)
         { p=p->link; bl--;}
         p2=p;
         p=p->link;
         q=t_copy1.Head()->link;
         p2->link=q;
         while(q->link!=NULL)
               q=q->link;
         q->link=p;

         while(br>1)
          { p=p->link; br--;}
         p3=p;
         p=p->link;
         q=t_copy2.Head()->link;
         p3->link=q;
         while(q->link!=NULL)
               q=q->link;
         q->link=p;

         p->link=p0;
      }

      if(l==M)
      {

         while(L>1)
         { p=p->link; L--; }
         p1=p;
         p=p->link;

         while(br>1)
         { p=p->link; br--; }
         p2=p;
         p=p->link;
         p3=p;

         p=p->link;

         while(b>=1)
         {
               t_copy1.Append(p->num);
               t_copy2.Append(p->num);
               p=p->link;
               b--;
         }
         t_copy1.Append(5);
         t_copy2.Append(5);                       

         p3->link=p0;

         q=t_copy1.Head()->link;
         while(q->link!=NULL)
               q=q->link;
         q->link=p1->link;
         p1->link=t_copy1.Head()->link;

         q=t_copy2.Head()->link;
         while(q->link!=NULL)
               q=q->link;
         q->link=p2->link;
         p2->link=t_copy2.Head()->link;
      }

      return hhh;                                              

}                                       

//---------------------------------------------------------------------------

 int T_Prepare::Shell(T_node *h0,int PP)
{
     T_node *p,*r,*l;
     T_Stack S4;
     S4.do_empty();
     int R,L,R_n,L_n,i;
     int position=1;
     int temp,a,n=0;                               
     p=h0;
     r=l=h0;
     a=PP;

     while(PP!=0)
        {
             PP--;
             if(abs(p->num)>=7)
             { S4.Push(position); p=p->link; position++;}
             else
             {
                  R=S4.Pop(); L=S4.Pop();
                  S4.Push(position);
                  position++;
                  p=p->link;
             }
        }

     temp=R;
     while(temp!=1)
     {  r=r->link; temp--;}
     R_n=r->num;

     temp=L;
     while(temp!=1)
     {  l=l->link; temp--;}
     L_n=l->num;

     r=l=h0;
     if(L_n==5)
     {
        for(i=0;i<L;i++)
        {
          if(l->num==6)
             n=1;
          l=l->link;
        }
        if(n==1) a=Shell(h0,L);                
     }
     else if(R_n==5)
     {
        for(i=0;i<L;i++)
            r=r->link;
        for(i=0;i<R-L;i++)
        {
          if(r->num==6)
             n=1;
          r=r->link;
        }
        if(n==1) a=Shell(h0,R);
     }

     return a;
}
//--------------------------------------------------------------------------

//---------------------------------------------------------------------------



//---------------------------------------------------------------------------
//---------------------------------------------------------------------------


void __fastcall TForm1::StartClick(TObject *Sender)
{
      if(S[0][0]!=0)
      {
         Form2= new TForm2(Application);
         Form1->Hide();
         Form2->ShowModal();
         Form2->Free();
         Form1->Initialize->Click();
         Form1->Show();
      }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::HelpClick(TObject *Sender)
{
         Form3= new TForm3(Application);
         Form3->ShowModal();
         Form3->Free();


}
//---------------------------------------------------------------------------

void __fastcall TForm1::InitializeClick(TObject *Sender)
{
         int i,j;

         for(i=1;i<200;i++)
         {      V[i]="";
         }
         for(i=0;S[i][0]!=0&&i<200;i++)
                for(j=0;S[i][j]!=0&&j<200;j++)
                        S[i][j]=0;

         for(i=0;i<200;i++)
         {      h[i]=0;
         }

         Memo1->Clear();
         RichEdit1->Clear();
         Memo2->Clear();
         ::SetFocus(Memo1->Handle);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::loadeClick(TObject *Sender)
{
        if(OpenDialog1->Execute())
        {       Form1->Initialize->Click();
                Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
        }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::About1Click(TObject *Sender)
{
        MessageDlg("自动逻辑推理机  归结反演方法 2003/12\t\n\t\n程序设计:陈运文 徐琪 指导教师:危辉",mtInformation,TMsgDlgButtons()<<mbOK,0);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::New1Click(TObject *Sender)
{
        Form1->Initialize->Click();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Open1Click(TObject *Sender)
{
        Form1->loade->Click();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SaveAs1Click(TObject *Sender)
{
      if(SaveDialog10->Execute())
      {         Memo1->Lines->SaveToFile(SaveDialog10->FileName);
      }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Print1Click(TObject *Sender)
{
       PrintDialog1->Execute();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Exit1Click(TObject *Sender)
{
        Form1->Exit->Click();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Contents1Click(TObject *Sender)
{
          Form1->Help->Click();
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -