- int CMyView::Algorithum()
- {
- int a[4];//用来表示四个数的标号;
- int b[3];//用来表示三个符号;
- double ra[4];
- char istring[20];
- int i=0;
- int tag=0;
- int count=0;
- int p=0;
- /////////////////////////////////////////////////////////////
- for(a[0]=0;a[0]<4;a[0]++)
- {
- for(a[1]=0;a[1]<4;a[1]++)
- {
- if(a[0]==a[1])
- continue;
- for(a[2]=0;a[2]<4;a[2]++)
- {
- if(a[2]==a[0]||a[2]==a[1])
- continue;
- for(a[3]=0;a[3]<4;a[3]++)
- {
- if(a[3]==a[2]||a[3]==a[1]||a[3]==a[0])
- continue;
- for(i=0;i<4;i++)
- {
- ra[i]=poke[a[i]]+0.0;
- }
- for(b[0]=0;b[0]<4;b[0]++)
- for(b[1]=0;b[1]<4;b[1]++)
- for(b[2]=0;b[2]<4;b[2]++)
- {
- for(i=0;i<4;i++)
- {
- ra[i]=poke[a[i]]+0.0;
- }
- //////////////////////////////////////////// (((a0b0a1)b1a2)b2a3)
- tag=0;
- for(i=0;i<3;i++)
- {
- switch(b[i])
- {
- case 0: ra[i+1]=ra[i]+ra[i+1];break;
- case 1: ra[i+1]=ra[i]-ra[i+1];break;
- case 2: ra[i+1]=ra[i]*ra[i+1];break;
- case 3:
- if(ra[i+1]>0.0001||ra[i+1]<-0.0001)
- ra[i+1]=ra[i]/ra[i+1];
- else tag=1;
- break;
- }
- if(tag==1)
- break;
- //解
- if(!tag&&i==2&&(ra[3]-24.0)<0.0001&&(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;
- ShowFonts(istring);
- 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&&(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;
- }
- 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;
- ShowFonts(istring);
- p=0;
- count++;
- }
- }
- }
- }
- }
- }
- if(count==0)
- ShowFonts("there is no answer at all");
- return count;
- }