?? unit1my.cpp
字號:
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("自動邏輯推理機(jī) 歸結(jié)反演方法 2003/12\t\n\t\n程序設(shè)計(jì):陳運(yùn)文 徐琪 指導(dǎo)教師:危輝",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();
}
//---------------------------------------------------------------------------
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -