欢迎来到天天文库
浏览记录
ID:14401942
大小:157.00 KB
页数:13页
时间:2018-07-28
《c++24点扑克牌游戏(含源码)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、实验设计方案1、实验内容与目的(简单介绍实验内容,说明实验目的)实验目的:实现扑克牌游戏:对于任意的四个1到13的整数(四张扑克牌),求能算出24的表达式;运算符有()+-*/;若无解则输出相应的信息。实验内容:你的具体选择(要详细)文件输入(input.txt)输出(output.txt),输出全部结果;——————————————————————————————————————2、实验准备工作(阐述解决问题所涉及的算法思想,至少要画一个算法流程图来说明)本次实验相当于,给出四个数字,要求,在其间添加运算符和括号,使得计算结果等于24。括号的放置
2、即为决定哪几个数先进行计算。所以,我们先确定首先进行计算的两个相邻的数,计算完成后,就相当于剩下三个数字,仍需要在它们之间添加符号;然后再决定在这三个数中哪两个相邻的数先计算。由此,我们就成功解决了数字的运算次序问题,此时不需要再考虑不同运算符号的优先级问题,因为括号的优先级高于加减乘除。通过循环,我们可以得到第一第二第三次计算的运算符,再通过计算,就可以得出和,若和等于24,即为所求解。在输出格式中,由于括号的放置共六种情况,故根据计算先后顺序的不同,输出时在不同地方放置括号;以下为循环计算的流程图:第一个数字第二个数字第三个数字第四个数字第二个数字
3、第一个数字第二个数字第三个数字第一个数字选择先行计算的两个相邻数选择先行计算的两个相邻数第一个符号第二个符号第三个符号和表示循环获取;表示计算数值以下为计算函数的流程图:数字2数字1符号数字1数字2结果+或-或*/若数字2不为0返回结果——————————————————————————————————————二、实验步骤、测试与结果分析1、源程序的设计(在此附上源程序(cpp文件)清单)#include#include#includeusingnamespacestd;charsign[4]={'+
4、','-','*','/'};//定义一个全局变量,用于储存加减乘除符号,方便下面符号判断classgame24point//24点纸牌游戏类{private:doublea[4];//为实现精确计算,防止计算结果为小数却被强制转换为整数,采用double变量public:game24point();//构造函数doublecalcute(double,double,char);//计算函数,给出一个符号两个有顺序的数,计算结果voidsearch();//搜索函数,用于寻找合适的解voidprint();//打印得到的四张纸牌的数值};game24p
5、oint::game24point(){charch[4];//由于纸牌中除了数字还有AJQK等字符,故使用字符数组ifstreaminfile("input.txt");if(!infile)//若打开失败{cout<<"打开文件input.txt失败!"<>ch[i];//在input文件中读取数据cout<<"##########################################"<6、在从input.txt中读取数据##"<7、i]=='3')a[i]=3;elseif(ch[i]=='4')a[i]=4;elseif(ch[i]=='5')a[i]=5;elseif(ch[i]=='6')a[i]=6;elseif(ch[i]=='7')a[i]=7;elseif(ch[i]=='8')a[i]=8;elseif(ch[i]=='9')a[i]=9;else{cout<<"第"<8、leb,charindex){if(index=='+')returna+b;//若为+,则返
6、在从input.txt中读取数据##"<7、i]=='3')a[i]=3;elseif(ch[i]=='4')a[i]=4;elseif(ch[i]=='5')a[i]=5;elseif(ch[i]=='6')a[i]=6;elseif(ch[i]=='7')a[i]=7;elseif(ch[i]=='8')a[i]=8;elseif(ch[i]=='9')a[i]=9;else{cout<<"第"<8、leb,charindex){if(index=='+')returna+b;//若为+,则返
7、i]=='3')a[i]=3;elseif(ch[i]=='4')a[i]=4;elseif(ch[i]=='5')a[i]=5;elseif(ch[i]=='6')a[i]=6;elseif(ch[i]=='7')a[i]=7;elseif(ch[i]=='8')a[i]=8;elseif(ch[i]=='9')a[i]=9;else{cout<<"第"<
8、leb,charindex){if(index=='+')returna+b;//若为+,则返
此文档下载收益归作者所有