📄 新二十四点view.cpp
字号:
break;
//解
if(!tag&&i==2&&fabs(ra[3]-24.0)<0.0001)
{
istring[p++]='(';
istring[p++]='(';
if(poke[a[0]]/10==0)
{
istring[p++]=48+poke[a[0]];
}
else
{
istring[p++]=poke[a[0]]/10+48;
istring[p++]=poke[a[0]]%10+48;
}
switch(b[0])
{
case 0: istring[p++]='+';break;
case 1: istring[p++]='-';break;
case 2: istring[p++]='*';break;
case 3: istring[p++]='/';break;
}
if(poke[a[1]]/10==0)
{
istring[p++]=48+poke[a[1]];
}
else
{
istring[p++]=poke[a[1]]/10+48;
istring[p++]=poke[a[1]]%10+48;
}
istring[p++]=')';
switch(b[1])
{
case 0: istring[p++]='+';break;
case 1: istring[p++]='-';break;
case 2: istring[p++]='*';break;
case 3: istring[p++]='/';break;
}
if(poke[a[2]]/10==0)
{
istring[p++]=48+poke[a[2]];
}
else
{
istring[p++]=poke[a[2]]/10+48;
istring[p++]=poke[a[2]]%10+48;
}
istring[p++]=')';
switch(b[2])
{
case 0: istring[p++]='+';break;
case 1: istring[p++]='-';break;
case 2: istring[p++]='*';break;
case 3: istring[p++]='/'; break;
}
if(poke[a[3]]/10==0)
{
istring[p++]=48+poke[a[3]];
}
else
{
istring[p++]=poke[a[3]]/10+48;
istring[p++]=poke[a[3]]%10+48;
}
istring[p++]='=';
istring[p++]='2';
istring[p++]='4';
istring[p]=NULL;
bool having=false;
for(int i=0;i<m_sArray.GetSize();i++)
{
if(m_sArray[i]==istring)
having=true;
}
if(having==false)
{
m_sArray.Add(istring);
ShowFonts(istring,40,20,point);
point.y+=40;
}
count++;
p=0;
}
}
//(a0b0a1)b1(a2b2a3)
tag=0;
for(i=0;i<4;i++)
{
ra[i]=poke[a[i]];
}
switch(b[0])
{
case 0: ra[1]=ra[0]+ra[1];break;
case 1: ra[1]=ra[0]-ra[1];break;
case 2: ra[1]=ra[0]*ra[1];break;
case 3:
if(ra[1]!=0)
ra[1]=(ra[0]+0.0)/ra[1];
else
tag=1;
break;
}
switch(b[2])
{
case 0: ra[2]=ra[2]+ra[3];break;
case 1: ra[2]=ra[2]-ra[3];break;
case 2: ra[2]=ra[2]*ra[3];break;
case 3:
if(ra[3]!=0)
ra[2]=(ra[2]+0.0)/ra[3];
else
tag=1;
break;
}
switch(b[1])
{
case 0: ra[3]=ra[1]+ra[2];break;
case 1: ra[3]=ra[1]-ra[2];break;
case 2: ra[3]=ra[1]*ra[2];break;
case 3:
if(ra[2]!=0)
ra[3]=(ra[1]+0.0)/ra[2];
else
tag=1;
break;
}
//解
if(!tag&&fabs(ra[3]-24.0)<0.0001)
{
istring[p++]='(';
if(poke[a[0]]/10==0)
{
istring[p++]=48+poke[a[0]];
}
else
{
istring[p++]=poke[a[0]]/10+48;
istring[p++]=poke[a[0]]%10+48;
}
switch(b[0])
{
case 0: istring[p++]='+';break;
case 1: istring[p++]='-';break;
case 2: istring[p++]='*';break;
case 3: istring[p++]='/';break;
}
if(poke[a[1]]/10==0)
{
istring[p++]=48+poke[a[1]];
}
else
{
istring[p++]=poke[a[1]]/10+48;
istring[p++]=poke[a[1]]%10+48;
}
istring[p++]=')';
switch(b[1])
{
case 0: istring[p++]='+';break;
case 1: istring[p++]='-';break;
case 2: istring[p++]='*';break;
case 3: istring[p++]='/';break;
}
istring[p++]='(';
if(poke[a[2]]/10==0)
{
istring[p++]=48+poke[a[2]];
}
else
{
istring[p++]=poke[a[2]]/10+48;
istring[p++]=poke[a[2]]%10+48;
}
switch(b[2])
{
case 0: istring[p++]='+';break;
case 1: istring[p++]='-';break;
case 2: istring[p++]='*';break;
case 3: istring[p++]='/';break;
}
if(poke[a[3]]/10==0)
{
istring[p++]=48+poke[a[3]];
}
else
{
istring[p++]=poke[a[3]]/10+48;
istring[p++]=poke[a[3]]%10+48;
}
istring[p++]=')';
istring[p++]='=';
istring[p++]='2';
istring[p++]='4';
istring[p]=NULL;
bool having=false;
for(int i=0;i<m_sArray.GetSize();i++)
{
if(m_sArray[i]==istring)
having=true;
}
if(having==false)
{
m_sArray.Add(istring);
ShowFonts(istring,40,20,point);
point.y+=40;
}
p=0;
count++;
}
///////////////////////////////(a0b0(a1b1a2))b2a3
tag=0;
p=0;
for(i=0;i<4;i++)
{
ra[i]=poke[a[i]];
}
switch(b[1])
{
case 0: ra[1]=ra[1]+ra[2];break;
case 1: ra[1]=ra[1]-ra[2];break;
case 2: ra[1]=ra[1]*ra[2];break;
case 3:
if(ra[2]!=0)
ra[1]=(ra[1]+0.0)/ra[2];
else
tag=1;
break;
}
switch(b[0])
{
case 0: ra[0]=ra[0]+ra[1];break;
case 1: ra[0]=ra[0]-ra[1];break;
case 2: ra[0]=ra[0]*ra[1];break;
case 3:
if(ra[1]!=0)
ra[0]=(ra[0]+0.0)/ra[1];
else tag=1;
break;
}
switch(b[2])
{
case 0: ra[3]=ra[0]+ra[3];break;
case 1: ra[3]=ra[0]-ra[3];break;
case 2: ra[3]=ra[0]*ra[3];break;
case 3:
if(ra[3]!=0)
ra[3]=(ra[0]+0.0)/ra[3];
else tag=1;
break;
}
//解
if(!tag&&(ra[3]-24.0)<0.0001&&(ra[3]-24.0)>-0.0001)
{
istring[p++]='(';
if(poke[a[0]]/10==0)
{
istring[p++]=48+poke[a[0]];
}
else
{
istring[p++]=poke[a[0]]/10+48;
istring[p++]=poke[a[0]]%10+48;
}
switch(b[0])
{
case 0: istring[p++]='+';break;
case 1: istring[p++]='-';break;
case 2: istring[p++]='*';break;
case 3: istring[p++]='/';break;
}
istring[p++]='(';
if(poke[a[1]]/10==0)
{
istring[p++]=48+poke[a[1]];
}
else
{
istring[p++]=poke[a[1]]/10+48;
istring[p++]=poke[a[1]]%10+48;
}
switch(b[1])
{
case 0: istring[p++]='+';break;
case 1: istring[p++]='-';break;
case 2: istring[p++]='*';break;
case 3: istring[p++]='/';break;
}
if(poke[a[2]]/10==0)
{
istring[p++]=48+poke[a[2]];
}
else
{
istring[p++]=poke[a[2]]/10+48;
istring[p++]=poke[a[2]]%10+48;
}
istring[p++]=')';
istring[p++]=')';
switch(b[2])
{
case 0: istring[p++]='+';break;
case 1: istring[p++]='-';break;
case 2: istring[p++]='*';break;
case 3: istring[p++]='/';break;
}
if(poke[a[3]]/10==0)
{
istring[p++]=48+poke[a[3]];
}
else
{
istring[p++]=poke[a[3]]/10+48;
istring[p++]=poke[a[3]]%10+48;
}
istring[p++]='=';
istring[p++]='2';
istring[p++]='4';
istring[p]=NULL;
bool having=false;
for(int i=0;i<m_sArray.GetSize();i++)
{
if(m_sArray[i]==istring)
having=true;
}
if(having==false)
{
m_sArray.Add(istring);
ShowFonts(istring,40,20,point);
point.y+=40;
}
p=0;
count++;
}
///////////////////////////////a0b0(a1b1(a2b2a3))
tag=0;
p=0;
for(i=0;i<4;i++)
{
ra[i]=poke[a[i]];
}
switch(b[2])
{
case 0: ra[2]=ra[2]+ra[3];break;
case 1: ra[2]=ra[2]-ra[3];break;
case 2: ra[2]=ra[2]*ra[3];break;
case 3:
if(ra[3]!=0)
ra[2]=(ra[2]+0.0)/ra[3];
else tag=1;
break;
}
switch(b[1])
{
case 0: ra[1]=ra[1]+ra[2];break;
case 1: ra[1]=ra[1]-ra[2];break;
case 2: ra[1]=ra[1]*ra[2];break;
case 3:
if(ra[2]!=0)
ra[1]=(ra[1]+0.0)/ra[2];
else tag=1;
break;
}
switch(b[0])
{
case 0: ra[0]=ra[0]+ra[1];break;
case 1: ra[0]=ra[0]-ra[1];break;
case 2: ra[0]=ra[0]*ra[1];break;
case 3:
if(ra[1]!=0)
ra[0]=(ra[0]+0.0)/ra[1];
else tag=1;
break;
}
//解a0b0(a1b1(a2b2a3))
if(!tag&&(ra[0]-24.0)<0.0001&&(ra[0]-24.0)>-0.0001)
{
if(poke[a[0]]/10==0)
{
istring[p++]=48+poke[a[0]];
}
else
{
istring[p++]=poke[a[0]]/10+48;
istring[p++]=poke[a[0]]%10+48;
}
switch(b[0])
{
case 0: istring[p++]='+';break;
case 1: istring[p++]='-';break;
case 2: istring[p++]='*';break;
case 3: istring[p++]='/';break;
}
istring[p++]='(';
if(poke[a[1]]/10==0)
{
istring[p++]=48+poke[a[1]];
}
else
{
istring[p++]=poke[a[1]]/10+48;
istring[p++]=poke[a[1]]%10+48;
}
switch(b[1])
{
case 0: istring[p++]='+';break;
case 1: istring[p++]='-';break;
case 2: istring[p++]='*';break;
case 3: istring[p++]='/';break;
}
istring[p++]='(';
if(poke[a[2]]/10==0)
{
istring[p++]=48+poke[a[2]];
}
else
{
istring[p++]=poke[a[2]]/10+48;
istring[p++]=poke[a[2]]%10+48;
}
switch(b[2])
{
case 0: istring[p++]='+';break;
case 1: istring[p++]='-';break;
case 2: istring[p++]='*';break;
case 3: istring[p++]='/';break;
}
if(poke[a[3]]/10==0)
{
istring[p++]=48+poke[a[3]];
}
else
{
istring[p++]=poke[a[3]]/10+48;
istring[p++]=poke[a[3]]%10+48;
}
istring[p++]=')';
istring[p++]=')';
istring[p++]='=';
istring[p++]='2';
istring[p++]='4';
istring[p]=NULL;
bool having=false;
for(int i=0;i<m_sArray.GetSize();i++)
{
if(m_sArray[i]==istring)
having=true;
}
if(having==false)
{
m_sArray.Add(istring);
ShowFonts(istring,40,20,point);
point.y+=40;
}
p=0;
count++;
}
}
}
}
}
}
point.x=0;
if(count==0)
ShowFonts("there is no answer at all",40,20,point,255);
return count;
}
void CMyView::DrawLine(CDC* pDC,int red,int green ,int blue,int linewidth,int x1,int y1,int x2,int y2 )
{
CPen pen(PS_SOLID,linewidth,RGB(red,green,blue));
CPen *oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(x1,y1);
pDC->LineTo(x2,y2);
pDC->SelectObject(oldpen);
}
//////////////////////////////////////?????????????????????????
void CMyView::OnGo()
{
}
void CMyView::ShowPai()
{
CPoint point=PaiPoint;
char a[2];
int i;
for(i=0;i<4;i++)
{
sprintf(a,"%d",poke[i]);
switch(i)
{ case 0:
ShowFonts(a,180,50,point,255);break;
case 1:
ShowFonts(a,180,50,point,0,255);break;
case 2:
ShowFonts(a,180,50,point,0,0,255);break;
case 3:
ShowFonts(a,180,50,point,122,122,122);break;
}
point.x+=200;
}
}
void CMyView::OnRButtonDown(UINT nFlags, CPoint point)
{
CClientDC dc(this);
// TODO: Add your message handler code here and/or call default
step=0;
//step=0表示清除expr[]中的元素!!
DrawLine(&dc,255,255,255,200,0,400,410,400);
Algorithum(poke);
lrtag=1;
CView::OnRButtonDown(nFlags, point);
}
void CMyView::OnGocal()
{
// TODO: Add your command handler code here
CCalDlg dlg(this);
dlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -