易码技术论坛

 找回密码
 加入易码
搜索
查看: 90915|回复: 2

[下载]24点计算器修正版

[复制链接]
发表于 2005-3-9 12:03:00 | 显示全部楼层
LAVA的图形函数强大
这个用BACIS就够吧??
不过还是支持
 楼主| 发表于 2005-3-12 22:28:00 | 显示全部楼层
错了,将
if((a*1000)/((c*1000)/d-b*1000)==24)
  {printf("%d/(%d/%d-%d)=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
改为
if((a*1000)/((b*1000)/c-d*1000)==24)
  {printf("%d/(%d/%d-%d)=24\n",a,b,c,d);
   getchar();
   goto begin;
  }

 楼主| 发表于 2005-3-8 12:22:57 | 显示全部楼层 |阅读模式
修正了例如(4/6+4)*5=24的错误

这是源代码:

/*24点计算器源代码,悍颀制作 2005.3.5*/
#define ENTER_KEY 13#define LT_KEY 23
#define AC_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;
     break;
    }
  }
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==AC_KEY) exit(0);
SetScreen(0);
printf("请输入4个数字(1-13)");
for(num[0]=0;num[0]<1||num[0]>13;num[0]=inputn(20));
for(num[1]=0;num[1]<1||num[1]>13;num[1]=inputn(25));
for(num[2]=0;num[2]<1||num[2]>13;num[2]=inputn(30));
for(num[3]=0;num[3]<1||num[3]>13;num[3]=inputn(35));
printf("\n");
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*1000-1)/(b*1000-(c*1000)/d)+1==24)
  {printf("%d/(%d-%d/%d)=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a*1000)/((c*1000)/d-b*1000)==24)
  {printf("%d/(%d/%d-%d)=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if((a*1000-(b*1000)/c)*d/1000==24)
  {printf("(%d-%d/%d)*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if(((a*1000)/b+c*1000)*d/1000+1==24)
  {printf("(%d/%d+%d)*%d=24\n",a,b,c,d);
   getchar();
   goto begin;
  }
if(((a*1000)/b-c*1000)*d/1000+1==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, 2025-6-18 21:47 , Processed in 0.009816 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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