数据结构课程设计(计算24点).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1 设计题目 计算24点 2 问题描述 有2、3、4、5、6、7、8、9、10、J、Q、K、A共13张牌,编一程序,判断对任意给定的4张牌,能否在进行加、减、乘、除运算后,其运算结果等于24。其中J按11计算,Q按12计算,K按13计算,A按1计算。如果能得到结果24,则输出可得到该结果的计算表达式。 若输入数据符合要求,且经过加、减、乘、除运算后,运行结果能得到24,如输入5,5,5,1,则显示可得到该结果的计算表达式,如5*(5-(1/5))。 若输入数据小于1或者大于13或者不是整数时,提示输入错误。 若输入不能运算出24的数据,如1,1,1,1,则显示经过加、减、乘、除运算后,运行结果不能得到24。 3设计 3.1存储结构设计 由于要储存的数据不多,主要是储存所输入的4个整数,所以采用一维数组(a[4])储存。而计算过程会出现小数,所以数据类型采用浮点型(float)。 3.2主要算法设计 程序采用穷举法,对输入的4个数进行排列,有 4!=24种。用for来循环,if来判断,算法如下。 for (i=0;i4;i++) for (j=0;j4;j++) if (j!=i) for (k=0;k4;k++) if (k!=j k!=i) for (l=0;l4;l++) if (l!=i l!=j l!=k) { calculate(a[i],a[j],a[k],a[l]);} 运算符号有4种,分别是 +、-、*、/,每次从里面选3种出来排列,有4*4*4=64 种情况,也用for来实现,算法如下 for (i=0;i4;i++) for (j=0;j6;j++) for (k=0;k6;k++) 用if来判断括号的类型,然后作出不同顺序的运算。括号有两对,主要有两种类型:一种是( ) ( )型,如(a+b)*(c+d) ;另一种是 ( ( ) )型,继续细分又有4种类型,如下a*(b*(c+d)) ,(a*(b+c))*d ,a*((b+c)*d) ,((a+b)*c)*d。算法如下 if ((!(i==3 b==0)) (!(j==3 c==0)) (!(k==3 d==0))) { sum1=arithmetic(i,a,b); sum2=arithmetic(j,sum1,c); sum3=arithmetic(k,sum2,d); } if (k==2) { sum1=arithmetic(i,a,b); sum2=arithmetic(j,c,d); sum3=sum1*sum2; } if (k==3) { sum1=arithmetic(i,a,b); sum2=arithmetic(j,c,d); if(sum2!=0) { sum3=sum1/sum2; } } 在输入方面,按要求,数据类型是 1 至13 的整数,符合则进行运算,不符合则重新输入。用if语句来实现,如下 if (a[i]1 || a[i]13 || a[i]!=int(a[i])) 在输出方面,运算结果等于 24就输出,利用调用的参数判断输出形式,有5种:(a+b)*(c+d),a*(b*(c+d)) ,(a*(b+c))*d ,a*((b+c)*d) ,((a+b)*c)*d。算法如下: void show(int type,int i,int j,int k,float a,float b,float c,float d) { if (type==1) { if(j==4 || j==5) { if (k==4 || k==5) coutdsign[k](csign[j](asign[i]b))=24 endl; else cout(csign[j](asign[i]b))sign[k]d= 24endl; } else if (k==4 || k==5) { coutdsign[k]((asign[i]b)sign[j]c)=24endl; } else cout((asign[i]b)sign[j]c)sign[k]d=24endl; } if (type==2 || type==3) { cout(asign[i]b)sign[k](csign[j]d)=24endl;

文档评论(0)

liyxi26 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档