




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学数据结构课程设计说明书目 录课程设计任务书 -1=课程设计任务书学生姓名: 赵旭林 专业班级: 计算机科学与技术0801 指导教师: 杨克 工作单位: 计算机科学系 题 目: 计算24点 初始条件:有2、3、4、5、6、7、8、9、10、J、Q、K、A共13张牌,编一程序,判断对任意给定的4张牌,能否在进行加、减、乘、除运算后,其运算结果等于24。其中J按11计算,Q按12计算,K按13计算,A按1计算。(1)能接受用户输入的4张牌点,并进行24点判断,并输出判定结果。(2)若能得到结果24,要求输出至少一个可得到该结果的计算表达式。 例如,对给定的2,7,J,Q,按下述方法计算可得到结果24: (J-7)*(Q/2) 或 Q*(J-2-7) (3)若不能得到24点,亦应输出提示。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)课程设计报告按学校规定格式用A4纸打印(书写),并应包含如下内容: 1. 问题描述简述题目要解决的问题是什么。2. 设计存储结构设计、主要算法设计(用类C/C+语言或用框图描述)、测试用例设计;3. 调试报告调试过程中遇到的问题是如何解决的;对设计和编码的讨论和分析。4. 经验和体会(包括对算法改进的设想)5. 附源程序清单和运行结果。源程序要加注释。如果题目规定了测试数据,则运行结果要包含这些测试数据和运行输出。说明:1. 设计报告、程序不得相互抄袭和拷贝;若有雷同,则所有雷同者成绩均为0分。2. 凡拷贝往届任务书或课程设计充数者,成绩一律无效,以0分记。时间安排:1、第18周完成。2、7月2日8:30时到实验中心检查程序、交课程设计报告、源程序(U盘)。指导教师签名: 2010年 月 日系主任(或责任教师)签名: 2010年 月 日数据结构课程设计正文 -计算24点1. 问题描述在A、2、3、4、5、6、7、8、9、10、J、Q、K中任意选择4个数,通过这4个数进行任意+ 、- 、*、 /的运算(这四个数可以任意排列),而且可以添加需要的“()”来进行先后运算。看是否能够得到一个计算式,使得其结果为24。如果有,则输出所有的计算式,如果没有,则输出相应的提示。例如,对给定的2,7,J,Q,按下述方法计算可得到结果24,并且输出下列的表达式: (J-7)*(Q/2)=24 Q*(J-2-7)=24 由于输入有A、J、Q、K字符型数据,所以把输入数据存放在char字符型数组中,并且在程序内部定义一个数组,把输入的字符型数据一一转换为相对应的int整型,其中A代表为1,J代表为11,Q代表为12,K代表为13。约束条件:输入的4个数不能为重复,如果重复,则输出错误提示,并要求重新输入。而且输入的数不能在所要求的数之外,如果输入了不在输入范围内的数,则也应该输出相应错误提示,并要求重新输入。2.实验设计2.1 算法设计:采用穷举法,把所有可能的情况一一计算,如果计算式得到24,则把相应的计算式输出;假设选择A B C D四张牌,#代表操作符,则有以下五种情况: 1.(A#B)#C)#D 2.(A#B)#(C#D) 3.(A#(B#C)#D 4.A#(B#C)#D) 5.A#(B#(C#D)把这些计算式都变成两两计算的情况,因此可以把一个计算式分成三个由两个运算数组合而成的计算式。其中的“#”可以是+、-、*、/ 中的任何一种运算,并且可以重复。A、B、C、D不能重复。由于按照以上的方法,ABCD的顺序固定,从而导致有一些情况不能被计算在内,所以需要列举出ABCD所有可能的排序状况,再将A B C D所有的排列组合一一按照上面的五个计算式计算。这样就能把所有有可能的情况都包含进去,不会漏掉某个有可能得到24点的算法。对四个数没进行完一次排序,则对新的排序序列进行24点计算式比较,如果有计算式,则输出所有的计算式,如果没有,则输出提示。现在程序外定义一些全局变量:cal r,w,t;/三个操作符类char data10;/输入的数据int _data10;/把牌转化为数字之后存放的数组bool find=false;/如果find为false,则代表没有24点计算式,如果为true,则代表有主函数伪码设计为:int main()tranput();/输入数据;tran();/转换数据;trandata();/处理数据;if(find=false)/如果没有能得到24点的计算式,输出提示;return 0;定义4个函数,分别完成相对应的功能。void tranput();/作用是让用户输入选择的牌;void tran();/把字符型的输入转换为对应的数字,A代表1,J代表11,Q代表12,K代表13;void look();/对于4张牌的一个组合寻找能得出点的表达式;void trandata();/列出所选择4张牌的所有可能排列情况,再对每种情况进行look()操作;2.2 伪码设计 存储结构设计,定义一个cal类,目的是重载操作符。重载函数返回经过重载后操作符运算的结果。cal类伪码:class cal /操作符类,重载操作符public:char s; /s为操作符cal()double operator()(double a,double b) /重载操作符switch(s)判断s,对不同的s返回不同的结果;;tranput()函数伪码:void tranput()for(int i=0;i=0;j-)将正确的当前输入与之前输入相比较,如果相同代表重复输入,输出错误提示;look()函数伪码:void look()定义数组char,存放+、-、*、/四种运算符for(int i=0;i4;i+)/不同组合的操作符 选择一种运算符;for(int i=0;i4;i+)选择一种运算符;for(int i=0;i4;i+)选择一种运算符;一一对五种表达式进行判断,如果行,则把find值为true;trandata()伪码:void trandata() char temp10; for(int i=0;i”: 没有找到接受“std:string”类型的右操作 数的运算符(或没有可接受的转换) c:programfilesmicrosoftvisualstudio9.0vcincludeistream(1144): “std:basic_istream&std:operator std:char_traits(std:basic_istream &,signed char *)” with _Elem=char, _Traits=std:char_traits 不知道怎么调试,所以只能在输入的时候提示用户用#来代表10的输入;例如:输入5,7,#,K(5,7,10,K) 得到下列的结果:(5-K)*(7-#)=24 (7-#)*(5-K)=24 (#-7)*(K-5)=24(K-5)*(#-7)=243.因为运算符有交换率,不同的表达式有可能表达相同的意思。所以在程序的输出中有很大一部分结果是重复的。例如,输入3,7,9,K,结果为:(7*9)-(K*3)=24 (7*9)-(3*K)=24(9*7)-(K*3)=24(9*7)-(3*K)=24 这四个表达式代表相同的意思,可以用其中任意一个计算式代表其他,但目前为止还没有想出来好的办法来进行重复计算式的判断。4.实验结果与分析1.K K 7 7 结果为:结果分析:输入第一个K,符合要求,输入第二个K,与第一个重复,输出错误提示,后面同理。程序继续等待输入正确数字。 2.10 5 6 7(#,5,6,7); 结果为: 结果分析:为正确输入,没有相应的24点计算式。3.A 6 9 K;结果为: 结果分析:有相当多的计算式,不过其中有很多重复。4.Q 7 9 K;结果为: 结果分析:和第二组数据一样,没有相应的24点计算式。5.R 14 5 K 结果为:结果分析:由于R和14不在输入范围里面,所以导致错误提示。程序继续等待输入正确数字。5.经验和体会 这次的的课程设计使我收获了很多平时上课和做练习不能得到的经验,并且让我对编程有了更加深入的了解,激发了我对编程的兴趣。1.程序设计要求程序员要有很清晰的思路和很好的耐心。在拿到题目后,首先应该对题目进行仔细的分析,清楚的明白题目的要求、约束条件等等。然后再进行算法的设计。2在进行算法的设计时,往往会有很多不同的思路来解决相同的一个问题。此时要对比这些思路,看看哪一个更适用于目前的算法,哪一个更简洁,更容易理解,综合所有的分析来选择一个相对来说更好的算法来进行编程。这样不仅能够节省大量的编程、调试时间,而且更容易理解,更能提升自己对编程的兴趣。3.在编程时候应该很仔细,很小心,对于一般的语法错误应该尽量避免。同时对于一些模棱两可的想法应该尽快查阅书本,不能混过去,这样很容易导致在后期的调试过程中出现大量不可预期的错误。4.在调试的过程中最难找出来
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家具配件厂夜班人员安全管理规定
- 行李计划员数字化技能考核试卷及答案
- 家具设计师专业技能考核试卷及答案
- 家具配件厂生产报表归档实施细则
- 家具配件厂薪酬调整管理办法
- 电池厂检测设备使用细则
- 室内楼梯砖铺贴合同范本
- 气体充装工专业技能考核试卷及答案
- 重冶浸出工理念考核试卷及答案
- 2025沈阳市苏家屯区消防救援大队政府专职消防员招聘15人考试参考题库及答案解析
- 食品安全事故流行病学调查技术指南
- 2025年河北省中考数学试卷(含解析)
- 组装工艺培训
- 2025年江苏省苏州市中考英语真题(原卷版)
- 儿童用药合理使用课件
- 2025-2030船用内燃机行业发展分析及投资价值研究咨询报告
- 《新编日语泛读教程学生用书1》课件-新编日语泛读教程 第三册 第1课
- 护理实习生安全协议书10篇
- 巨人的陨落介绍课件视频
- 无人机测量课件
- 党务工作论述知识课件
评论
0/150
提交评论