您当前的位置: 百科371电脑/网络VC++ → 电脑/网络内容 退出登录 用户管理 用户注册
本类热门文章
相关文章
中原建材网
24点计算器

减小字体 增大字体

问题:计算24点(加、减、乘、除、括号)玩法:从扑克中任意抽出四张(数字表示为1-13),用加、减、乘、除的方法使结果成为24,每张牌只能用一次。输入表达式,计算结果为24则正确。要求用VC++做,有源代码和其他文件请各位高手帮帮小弟的忙。。。。  

你好
下面的小程序有一些笨(语法很简单)
它无法分辨一些重复的情况
但结果还是基本正确的

#include<iostream>
using namespace std;

int main(){
int i1,i2,i3,i4,v,n1,n2;
int num=0;
int a,b;
double t1,t2,t3,t4,choice[4],s1[4],s2[4][4],s3[2],t;
for(;;){
cout<<"########################## 二十四点 ###################################\n友情提示:A=1,J=11,Q=12,K=13\n";
cout<<"请给出你抽到的第一牌:";
cin>>choice[0];
cout<<"请给出你抽到的第二牌:";
cin>>choice[1];
cout<<"请给出你抽到的第三牌:";
cin>>choice[2];
cout<<"请给出你抽到的第四牌:";
cin>>choice[3];
cout<<"########################## THINKING ###################################\n";

for(b=0;b<=2;b++)
for(a=3;a>=1+b;a--)if(choice[a]<choice[a-1]){
t=choice[a-1];
choice[a-1]=choice[a];
choice[a]=t;}

for(int j=0;j<4;j++)cout<<j+1<<". "<<choice[j]<<" ";
cout<<"\n";

for(i1=0;i1<4;i1++){
t1=choice[i1];
for(i2=0;i2<4;i2++){ if((i1-1)!=0 && t1==choice[i1-1])break;
if(i2!=i1){
t2=choice[i2];
s1[0]=t1+t2;
s1[1]=t1-t2;
s1[2]=t1*t2;
s1[3]=t1/t2;
for(i3=0;i3<4;i3++){
if(i3!=i1&&i3!=i2){
t3=choice[i3];
for(v=0;v<4;v++)
{s2[v][0]=s1[v]+t3;
s2[v][1]=s1[v]-t3;
s2[v][2]=s1[v]*t3;
s2[v][3]=s1[v]/t3;}
for(i4=0;i4<4;i4++){
if(i4!=i1&&i4!=i2&&i4!=i3){
t4=choice[i4];
for(n1=0;n1<4;n1++)for(n2=0;n2<4;n2++)
if(s2[n1][n2]+t4==24||s2[n1][n2]-t4==24||s2[n1][n2]*t4==24||s2[n1][n2]/t4==24){
cout<<"找到一种组合方案:\n(("<<t1;

if(s1[n1]==t1+t2)cout<<" + ";
if(s1[n1]==t1-t2)cout<<" - ";
if(s1[n1]==t1*t2)cout<<" * ";
if(s1[n1]==t1/t2)cout<<" / ";

if(n2==0)cout<<t2<<") + "<<t3;
if(n2==1)cout<<t2<<") - "<<t3;
if(n2==2)cout<<t2<<") * "<<t3;
if(n2==3)cout<<t2<<") / "<<t3;

if(s2[n1][n2]+t4==24)cout<<") + "<<t4<<" = 24 \n";
if(s2[n1][n2]-t4==24)cout<<") - "<<t4<<" = 24 \n";
if(s2[n1][n2]*t4==24)cout<<") * "<<t4<<" = 24 \n";
if(s2[n1][n2]/t4==24)cout<<") / "<<t4<<" = 24 \n";
num++;
}


}}}
}}}}

for(i1=0;i1<4;i1++){
t1=choice[i1];
for(i2=0;i2<4;i2++){
if(i2!=i1){
t2=choice[i2];
s1[0]=t1*t2;
s1[1]=t1/t2;
for(i3=0;i3<4;i3++){
if(i3!=i1&&i3!=i2){
t3=choice[i3];

for(i4=0;i4<4;i4++){
if(i4!=i1&&i4!=i2&&i4!=i3){
t4=choice[i4];
s3[0]=t3*t4;
s3[1]=t3/t4;

for(n1=0;n1<2;n1++)for(n2=0;n2<2;n2++)
if(s1[n1]+s3[n2]==24||s1[n1]-s3[n2]==24){
cout<<"找到一种组合方案:\n("<<t1;

if(s1[n1]==t1*t2)cout<<" * ";
if(s1[n1]==t1/t2)cout<<" / ";

if(s1[n1]+s3[n2]==24)cout<<t2<<") + ("<<t3;
if(s1[n1]-s3[n2]==24)cout<<t2<<") - ("<<t3;

if(s3[n2]==t3*t4)cout<<" * "<<t4<<") = 24 \n";
if(s3[n2]==t3/t4)cout<<" / "<<t4<<") = 24 \n";

num++;
}


}}}
}}}}

cout<<"总共有"<<num<<"种解法。\n";
if(num==0)cout<<"这四张牌无法构成24点~~~\n";
num=0;
}
return 0;
}

如果你对计算24点(加、减、乘、除、括号)玩法:从扑克中任意抽出四张(数字表示为1-13),用加、减、乘、除的方法使结果成为24,每张牌只能用一次。输入表达式,计算结果为24则正确。要求用VC++做,有源代码和其他文件请各位高手帮帮小弟的忙。。。。这个问题有好的意见或 建议,请留言
[] [返回上一页] [打 印]
电脑/网络评论 (评论内容只代表网友观点,与本站立场无关!)

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

中原建材网 简单版 站长QQ:382546553