易码技术论坛

 找回密码
 加入易码
搜索
查看: 189153|回复: 9

[工具] [下载]原创lava版24点计算器

[复制链接]
发表于 2006-12-8 13:56:47 | 显示全部楼层
+u+u
发表于 2006-12-8 18:23:39 | 显示全部楼层
3,3,7,7 就算不出来~

建议加入 (a+b/c)*d

比如:

(3+3/7)*7=24

(3+9/5)*5=24

(4+4/5)*5=24

....  ....
发表于 2006-12-8 19:15:44 | 显示全部楼层
好繁琐的代码
发表于 2006-12-8 19:54:03 | 显示全部楼层
方法"蠢"(LZ不要在意哟^____^b)了点,但是很要数学底子~
发表于 2006-12-8 19:56:51 | 显示全部楼层
用列举的方法,lz得检查一下是否列举详尽了
发表于 2006-12-8 20:05:00 | 显示全部楼层
+-*/再加上()可够麻烦的了!
发表于 2006-12-8 20:07:04 | 显示全部楼层
怎么回事?刚回的上面的帖子,把网页关了以后,连续开了20多个窗口

病毒!?
发表于 2006-12-8 20:08:43 | 显示全部楼层
还好
我好像没有中毒
发表于 2006-12-8 20:12:17 | 显示全部楼层
嘿嘿,现在的网络环境太差了,随时都要小心病毒和流氓软件
 楼主| 发表于 2005-3-17 13:31:57 | 显示全部楼层 |阅读模式
目前最强的24点计算器
/*24点计算器源代码,悍颀制作 2005.3.5*/
#define ENTER_KEY 13
#define LT_KEY 23
#define ESC_KEY 27
long inputn(char start)
{int i;
int n,sign;
char ch,row,col;
long value;
char numberc[11];
char string[12];
row=start/20;
col=start%20;
strcpy(numberc,"0bnmghjtyu");
memset(string,0,12);
sign=1;
n=0;
value=0;
for(;;)
  {n=strlen(string);
   Locate(row,col);
   memset(_TEXT+start,0,156-start);
   printf("%s_",string);
   ch=getchar();
   for(i=0;i<10;i++)
    {if(ch==numberc)
     {ch=i+'0';
      break;
     }
     else if(ch==20)
     ch='-';
    }
   if(isdigit(ch)&&n<10)
    string[n]=ch;
   else if (ch=='-')
    {if(sign==1)
      {memmove(string+1,string,10);
       string[0]=ch;
       }
      else if(sign==-1)
       {memmove(string,string+1,10);
        string[n-1]=0;
       }
      sign=-sign;
    }
   else if(ch==LT_KEY&&n)
    string[n-1]=0;
   else if (ch==ENTER_KEY&&n)
    {string[n]=0;
     memset(_TEXT+start+n,0,1);
     break;
    }
   else if(ch==ESC_KEY) exit(0);
   }
if(sign==1)
  i=0;
else
  i=1;
for(;i<n;i++)
  {ch=string;
   value=value*10+(ch&0xf);
  }
return sign*value;
}

void main()
{int num[4],i,j,k,l,a,b,c,d;
char ch;
begin:
SetScreen(0);
printf("     24点计算器\n\n   按任意键开始..\n\n 悍颀的首个Lava程序");
ch=getchar();
if(ch==ESC_KEY) exit(0);
SetScreen(0);
printf("请输入4个数字(1-13)");
Locate(1,0);
printf("a=");
for(num[0]=0;num[0]<1||num[0]>13;num[0]=inputn(22));
Locate(1,5);
printf("b=");
for(num[1]=0;num[1]<1||num[1]>13;num[1]=inputn(27));
Locate(1,10);
printf("c=");
for(num[2]=0;num[2]<1||num[2]>13;num[2]=inputn(32));
Locate(1,15);
printf("d=");
for(num[3]=0;num[3]<1||num[3]>13;num[3]=inputn(37));
Locate(2,0);
for(i=0;i<=3;i++)
  {a=num;
   for(j=0;j<=3;j++)
    {if(j==i) continue;
     b=num[j];
     for(k=0;k<=3;k++)
      {if(k==i||k==j) continue;
       c=num[k];
       for(l=0;l<=3;l++)
        {if(l==i||l==j||l==k) continue;
         d=num[l];
/*以下是45种算法*/
if(a+b+c+d==24)
  {printf("%d+%d+%d+%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if(a+b+c-d==24)
  {printf("%d+%d+%d-%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if(a*b+c+d==24)
  {printf("%d*%d+%d+%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if(a*b+c-d==24)
  {printf("%d*%d+%d-%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if(a*b-c-d==24)
  {printf("%d*%d-%d-%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if(a*b*c+d==24)
  {printf("%d*%d*%d+%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if(a*b*c-d==24)
  {printf("%d*%d*%d-%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if(a*b*c*d==24)
  {printf("%d*%d*%d*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if(a*b+c*d==24)
  {printf("%d*%d+%d*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if(a*b-c*d==24)
  {printf("%d*%d-%d*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if(a%b==0)
  if(a/b+c+d==24)
   {printf("%d/%d+%d+%d=24\n",a,b,c,d);
    getchar();
    goto begin;
   }
if(c%d==0)
  if(a+b-c/d==24)
   {printf("%d+%d-%d/%d=24\n",a,b,c,d);
    getchar();
    goto begin;
   }
if((a*b)%c==0)
  {if(a*b/c+d==24)
    {printf("%d*%d/%d+%d=24\n",a,b,c,d);
     getchar();
     goto begin;
    }
   if(a*b/c-d==24)
    {printf("%d*%d/%d-%d=24\n",a,b,c,d);
     getchar();
     goto begin;
    }
   if((a*b/c)%d==0)
    if(a*b/c/d==24)
     {printf("%d*%d/%d/%d=24\n",a,b,c,d);
      getchar();
      goto begin;
     }
  }
if((a*b*c)%d==0)
  if(a*b*c/d==24)
   {printf("%d*%d*%d/%d=24\n",a,b,c,d);
    getchar();
    goto begin;
   }
if(c%d==0)
  {if(a*b+c/d==24)
    {printf("%d*%d+%d/%d=24\n",a,b,c,d);
     getchar();
     goto begin;
    }
   if(a*b-c/d==24)
    {printf("%d*%d-%d/%d=24\n",a,b,c,d);
     getchar();
     goto begin;
    }
  }
if((a+b)*c+d==24)
  {printf("(%d+%d)*%d+%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a+b)*c-d==24)
  {printf("(%d+%d)*%d-%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a-b)*c+d==24)
  {printf("(%d-%d)*%d+%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a-b)*c-d==24)
  {printf("(%d-%d)*%d-%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a+b)*c*d==24)
  {printf("(%d+%d)*%d*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a-b)*c*d==24)
  {printf("(%d-%d)*%d*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a+b)*(c+d)==24)  {printf("(%d+%d)*(%d+%d)=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a-b)*(c-d)==24)
  {printf("(%d-%d)*(%d-%d)=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a-b)*(c+d)==24)
  {printf("(%d-%d)*(%d+%d)=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a+b+c)*d==24)
  {printf("(%d+%d+%d)*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a+b-c)*d==24)
  {printf("(%d+%d-%d)*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a-b-c)*d==24)
  {printf("(%d-%d-%d)*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a*b+c)*d==24)
  {printf("(%d*%d+%d)*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a*b-c)*d==24)
  {printf("(%d*%d-%d)*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a-b*c)*d==24)
  {printf("(%d-%d*%d)*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a*b-c)%d==0)
  if((a*b-c)/d==24)
   {printf("(%d*%d-%d)/%d=24\n",a,b,c,d);
    getchar();
    goto begin;
   }
if((a*b+c)%d==0)
  if((a*b+c)/d==24)
   {printf("(%d*%d+%d)/%d=24\n",a,b,c,d);
    getchar();
    goto begin;
   }
if((a*b)%(c+d)==0)
  if(a*b/(c+d)==24)
   {printf("%d*%d/(%d+%d)=24\n",a,b,c,d);
    getchar();
    goto begin;
   }
if((a+b)%c==0)
  if((a+b)/c+d==24)
   {printf("(%d+%d)/%d+%d=24\n",a,b,c,d);
    getchar();
    goto begin;
   }
if(((a+b)*c)%d==0)
  if((a+b)*c/d==24)
   {printf("(%d+%d)*%d/%d=24\n",a,b,c,d);
    getchar();
    goto begin;
   }
if(((a-b)*c)%d==0)
  if((a-b)*c/d==24)
   {printf("(%d-%d)*%d/%d=24\n",a,b,c,d);
    getchar();
    goto begin;
   }
if(c-d!=0&&(a*b)%(c-d)==0)
  if(a*b/(c-d)==24)
   {printf("%d*%d/(%d-%d)=24\n",a,b,c,d);
    getchar();
    goto begin;
   }
if(((a*10000)/(b*1000-(c*1000)/d)-1)/10==23&&((a*10000)/(b*1000-(c*1000)/d)+1)/10==24)
  {printf("%d/(%d-%d/%d)=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a*10000)/((b*1000)/c-d*1000-1)/10==23&&(a*10000)/((b*1000)/c-d*1000+1)/10==24)
  {printf("%d/(%d/%d-%d)=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if(((a*1000-(b*1000)/c)*d/100-1)/10==23&&((a*1000-(b*1000)/c)*d/100+1)/10==24)
  {printf("(%d-%d/%d)*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((((a*1000)/b+c*1000)*d/100-1)/10==23&&(((a*1000)/b+c*1000)*d/100+1)/10==24)
  {printf("(%d/%d+%d)*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((((a*1000)/b-c*1000)*d/100-1)/10==23&&(((a*1000)/b-c*1000)*d/100+1)/10==24)
  {printf("(%d/%d-%d)*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
           }
      }
    }
  }
printf("无解\n");
getchar();
goto begin;
}         
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-24 09:34 , Processed in 0.013425 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表