2022年数据结构课设计算点终版 .pdf
《2022年数据结构课设计算点终版 .pdf》由会员分享,可在线阅读,更多相关《2022年数据结构课设计算点终版 .pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、武汉理工大学数据结构课程设计说明书1 目录1 问题分析2 1.1 问题描述2 1.2 问题分析2 2 开发平台3 3 程序设计3 3.1 用来消去重复的全局变量的定义3 3.2 主程序设计3 3.3 算法设计5 4 程序调试7 4.1 程序错误7 4.2 运行结果8 5 自我评价和总结10 6 参考文献10 7 附录11 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - - - - 武汉理工大学数据结构课程设计说明书2 计算 24 点1 问
2、题分析1.1 问题描述有 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 点,亦应输出提示。1.2 问题分析1.2.1 输入根据题
3、意,输入要求能用数字或字符输入,数字为从 2 至 10,字符为 J、Q、K、A。在进行计算时将字符型转换成数字,J、Q、K、A 分别代表 11、12、13、1。当输入数据不符合要求时显示“重新输入”,直至输入数据满足要求。1.2.2 输出问题要求是四个数组成的方程式能得出24,但因为除法运算中精度的影响,有些运算式并不能得出准确的24,所以将判断条件由等于24 改为与 24 相比差距小于 0.00001。然后当输入的四个数不能组成24 时,输出“该牌点不能组成24 点” 。当输入的数据能组成 24 点时,用字符数组输出该组方程式。1.2.3 测试用的数据合法数据有:(1)任务中的 2、7、J、
4、Q (2)1、2、3、5 (3)1、5、7、9 (4)4、5、6、8 (5)J、Q、K、7 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - - - - - 武汉理工大学数据结构课程设计说明书3 等等非法数据有:(1)0、15 2 开发平台Microsoft Visual Studio 2008 专业版3 程序设计采用穷举法,将四个数能组成的所有方程都进行计算,如果能得出24,则把相应的计算式输出。 其中四个数字不能重复, 运算符可以重复。 具
5、体方法是利用 for 循环选取四个数进行组合,然后将运算分成三层利用递归一层层计算并保存。但是因为利用的是穷举法, 而且乘加法有交换律, 所以有很多方程式是重复的, 在输出时加入一点限定条件来消除重复。但是还是有少量的方程式依然重复,这个问题还是无法解决。在括号的问题上我的方法是程序进行运算时括号并不起作用,只在输出时加入方程式然后输出。并且除了最后一次运算,前三次都加上括号。3.1 用来消去重复的全局变量的定义为了消去重复先用opp3保存 3 个运算符,再根据运算符用ta、tb、t520来判断重复的第一个方程式是否已输出。3.2 主程序设计原来是准备将输入的数字或字符存入char数组,然后转
6、换为 int 型再存入数组。但是 10 这个数字算两个字符,进行输入时占了两个字符就出现了错误。用了很多方法进行改正还是总出现各种各样的问题,所以直接将输入J、Q、K、A改为输入 11、12、13、1。这样输入的话检验错误输入的条件也变得容易了。对于输入的数据的合法性判断利用bool 类型的 flag(初始为 false)来做判断, dowhile 循环进行校验。数据的合法在于数字是否在113的范围内和是否和前面输入的数字不同,只有当两者都满足时才将flag 改为 true 时接受输入的数字,并保存。以下流程图为:其中的 k 为检测是否存在能得出24 的方程式的判断标志,为全局变量。当其为 0
7、 时表示不存在,为1 是存在,初始时为0。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 15 页 - - - - - - - - - 武汉理工大学数据结构课程设计说明书4 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 15 页 - - - - - - - - - 武汉理工大学数据结构课程设计说明书5 3.3 算法设计计算的主要函数为count(f
8、loat a,char opef25,int n) 函数。 其参数 a传递的是已计算后得出的结果和未计算的数字,opef25 传递的是已计算的公式和未计算的数字, n 是 a中有效的的数字个数。此外函数还有 print(char opp,char opef25) , judge(int t,char opp,char opef25) 这两个函数, print 函数用来输出已消去部分重复后的所有方程式,judge 函数是 print 函数中的重复部分,单独弄成函数是为了方程的简洁。count函数的算法为:count(float a,char opef25,int n) begin 1.float
9、 b4 2.char opeff425 3.if n=1&|a0-24|d:visual studio 2008projects24点24点.cpp(37) : error C2124: 被零除或对零求模(6)在 count 函数中,将递归的函数写在了上一层的语句,导致运行失败。4.2 运行结果4.2.1 合法数据(1)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 15 页 - - - - - - - - - 武汉理工大学数据结构课程设计说明书9 (2)(3)(4) (
10、5)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 15 页 - - - - - - - - - 武汉理工大学数据结构课程设计说明书10 4.2.2 非法数据5 自我评价和总结计算 24 的的这个游戏在小时候的时候常常玩,一直觉得很简单,但没想到做成程序却有点复杂,要能把所有可能的算法全部算出来。这个算法用三层for语句循环很容易就能得出,但是要将得出24 的方程式输出就有困难了,于是这点难倒我了。分析了很多别人的算法后, 我找到了一个方法就是使用递归,递归调用, 从4
11、个数算到 3 个数 , 将计算结果、运算符和运算公式一层层保存,当最后一层运算结束后保存的数据中就只剩下一个结果和运算方程式,再根据计算结果来输出保存的字符,然后循环计算不同的方程式。在最后输出的时候,我尽量地消去重复的方程式。但是限定的条件不好找,所以最后的结果里面还是有重复的方程式,而且存在并未重复却被消去了的方程式。不过最后还是成功地输出了大多能得出24 的方程式。经过这次的课程设计, 我了解到了即使再简单的一个小游戏如果要变成得以实现的程序的话还是有很大困难的。6 参考文献1夏红霞 .算法设计与分析 M. 武汉:武汉大学出版社, 2011。2闵联营 ,何克右 .C+程序设计 M. 北京
12、:清华大学出版社, 2010。3殷人昆 .数据结构 M. 北京:清华大学出版社, 2005。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 15 页 - - - - - - - - - 武汉理工大学数据结构课程设计说明书11 附页源程序#include #include #include #include #include using namespace std; int k=0;/全局变量 K用来判定是否有解int t510=0,ta=0;/用于消去重复char op
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据结构课设计算点终版 2022 数据结构 计算 点终版
限制150内