- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
研究生课程论文
课程名称 C++语言应用
授课学期 2013 学年至 2014 学年
第 一 学期
学院 电子工程学院
专 业 电子与通信
学号 2013011646
姓名 刘 艳 红
任课教师 闭金杰
专 题C++的带括号四则运算设计
交稿日期 2014年02月15日
成绩
阅读教师签名
日 期
广西师范大学研究生学院
目 录
摘 要 1
一、设计任务,目的与要求 2
1.设计内容: 2
2.设计目的: 2
3.设计要求: 2
二、概要设计 3
1.需求分析: 3
2.设计要求: 3
3.总体设计: 3
三、运行结果及分析 5
1.程序运行测试: 5
2.测试数据: 5
3.结果及分析 6
附 录 7
四则运算的程序: 7
摘 要
在工资管理软件,不可避免的要用到公式的定义及求值等问题。对于数学表达式的计算,虽然直接对表达式进行扫描并按照优先级逐步计算,但将中缀表达式转换为逆波兰表达式更容易处理。就为无理数。在C++中,并没有预先定义有理数,需要时可以定义一个有理数类,将有理数的分子和分母分别存放在两个整型变量中。对有理数的各种操作都可以用重载运算符来实现。基本要求: 定义并实现一个有理数类,通过重载运算符+、-、*、/对有理数进行算术运算,通过重载运算符==实现判定两个有理数是否相等。写一个优化函数,它的作用是使有理数约去公分母,也即是使保存的有理数分子和分母之间没有公约数(除去1以外)。此外,还要定义一个将有理数转换为实数的函数,再加上构造函数和有理数输出函数。
一、设计任务,目的与要求
1.设计内容:
四则运算显示功能要求:
1) 在屏幕能够手动输入待运算的带有括号的四则运算式子;
2) 输入完成后,通过选择可以完成运算式的运算;
3) 将结果显示在屏幕上。
4) 验收时程序能够演示,自己单独做。
5) 输入是一个带有括号的四则运算表达式,输出是计算得出的正确计算结果。例如:输入:123+213-67*34+345/23*45。
2.设计目的:
1)复习、巩固C++语言的基础知识,进一步加深对C++语言的理解和掌握。
2)课程设计为将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力。提高适应实际,实践编程的能力。
3.设计要求:
1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理。
2)系统设计要实用,编程简练,可用,功能全面。
3)说明书、流程图要清楚。
4)记录设计情况(备查,也为编写设计说明书作好准备)。
5)要求采用模块化程序设计方法,要求上机调试通过和按设计报告格式。
6)设计上交内容:设计报告一人一份(按格式书写);源程序文件。
二、概要设计
1.需求分析:
1.四则运算表达式求值,将四则运算表达式用中缀表达式,然后转换为后缀表达式,并计算结果。
2.用户通过键盘输入一个中缀表达式,回车表示结束。
3.在Dos界面输出后缀表达式。
4.测试数据
输入:21+23*(12-6)
输出:21 23 12 6 -*+
2.设计要求:
实现带有括号的四则运算。输入是一个带有括号的四则运算表达式,输出是计算得出的正确计算结果。算法的设计: 设有两个有理数a*b和c/d,则有
(1) 有理数相加 计算式=a*d+b/c;
(2) 有理数相减 计算式=a*d-b/c;
(3) 有理数相乘 计算式=a*(b+c-d);
(4) 有理数相除 计算式=a/d;
输入:123+213-67*34+345/23*45*(34+34-345+245+567)回车,然后程序计算得出结果为:359183。
3.总体设计:
算法的基本思想:建树是本程序的难点。思路很直观,就是按照每次查找当前表达式区间的最后一次运算的运算符然后以这个运算符为根把区间分成左右进行递归建树。比如1+2*(1+2),最后一次运算是1 + 2*(1+2) 标记为红色的加号,把它作为根节点然后把表达式分为“1”和“2*(1+2)”进行递归,函数返回的是该函数处理区间表达式的根节点。判断最后运算的运算符(即根节点)的方法是找表达式中最右边的不在括号中的+或-,如果没有那就选最右边的不在括号中的*或/。根据此算法设计流程图为:
三、运行结果及分
文档评论(0)