- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算器-数据结构
实验项目: 计算器
实验目的:掌握栈的运算及应用,了解对算法的健壮性要求
实验内容:实现计算器类中lp、rp和operate函数;完善计算器类evaluate函数,增加对输入的合法性检查,包括滤掉所有非法输入及处理左右括号不配对的输入;编制应用程序测试这个计算器;
程序简介:该计算器能够过滤字母,即当输入的字符串中有字母的时候,会自动过滤掉;当输入的字符串不合法时,输出错误提示,本程序将会对下列的输入进行合法检验
(56-23)/8-4# 期望结果:0.125
34+p(u89-12.3)k/3# 期望结果:59.5667
89.5*749+25)# 期望结果:输入有误
(8*(7-4)# 期望结果:输入有误
65*(72+98)(70-45) # 期望结果:输入有误
6*# 期望结果:输入有误
)5+3(# 期望结果:输入有误
9….0878+1.2# 期望结果:10.2878
算法设计介绍:
先定义两个堆栈,一个存放符号,一个存放数字,两个函数lp和rp是定义加减乘除以及括号的优先级的。Clear函数是检验其合法性的。Operate函数是进行两个数字之间的运算,只有两个数和一个运算符。evaluate函数是过滤字符串以及计算结果的。当输入一个字符串之后,先判断其是否合法,再进行过滤字母和小数点的操作,然后再进行计算。当数字进栈的时候,若是浮点数,则现将存进栈的单个数字乘以相应的位权再相加转化成浮点数,再进行计算操作。
困难及解答
编这个程序的时候,一开始基本上没什么思路,后来请教了郑鹏同学,多亏郑鹏同学指点迷津,帮助我完成了这个计算器的设计,其实这个计算器还有很多不足的地方,我本来打算先过滤字母和小数点着,可是思路不清晰,导致编完之后的程序总是运行不出来,后来请教了郑鹏同学,在听完他的讲解之后,基本上明白了大体的思路,所以就仿照了郑鹏同学的算法,这个程序不是自己独立完成的,是得益于郑鹏同学的帮助。
心得
我逐渐意识到,自己平时编的程序太少了,少的都可怜。到了真正编程的时候就会手忙脚乱,不知从何下手。平时总是很有理由说没时间编程,编程太费时间了,但是,就我一个人没时间吗?难道别人就有时间吗?其实,自己的时间完全是由自己支配的,多抽出时间编程才是重中之重,以后还要靠这个吃饭。
程序清单
源代码:
/*
// 我真诚地保证:
// 我在同学的帮助下完成了整个程序从分析、设计到编码的所有工作。
// 如果在上述过程中,我遇到了什么困难而求教于人,那么,我将在程序实习报告中
// 详细地列举我所遇到的问题,以及别人给我的提示。
// 在此,我感谢 郑鹏同学和李雷阳同学对我的启发和帮助。下面的报告中,我还会具体地提到
// 他们在各个方法对我的帮助。
// 我的程序里中凡是引用到其他程序或文档之处,
// 例如教材、课堂笔记、网上的源代码以及其他参考书上的代码段,
// 我都已经在程序的注释里很清楚地注明了引用的出处。
// 我从未没抄袭过别人的程序,也没有盗用别人的程序,
// 不管是修改式的抄袭还是原封不动的抄袭。
// 我编写这个程序,从来没有想过要去破坏或妨碍其他计算机系统的正常运转
文件名称:
创建者:
创建时间:2011.3.14
最后修改时间:2011.3.17
功能:实现加减乘除四则运算
文件中的函数名称和简单功能描述:double operate(char theta, double a, double b)-实现两个数字的计算、
int rp(char op)-左优先级的定义、int lp(char op)右优先级的定义、 void evaluate()-四则运算的算法、
bool clear()-检验字符串是否合法;
文件中定义的全局变量和简单功能描述:无
文件中用到的他处定义的全局变量及其出处:无
与其他文件的依赖关系:
2.关于类的说明:
类名称: calculator
定义该类的目的:封装计算器的各种功能
类属性:
类中函数及功能:double operate(char theta, double a, double b)-实现两个数字的计算、
int rp(char op)-左优先级的定义、int lp(char op)右优先级的定义、 void evaluate()-四则运算的算法、
bool clear()-检验字符串是否合法;
与其他类的关系(调用/被调用哪类对象中的什么函数):
3. 关于函数的说明
(1) 函数名称:double operate(char theta, double a, double b)
函数功能描述:实现a与b的计算
函数调用之前的预备条件:double型的数据a和b以及一个运算符thet
您可能关注的文档
最近下载
- 神经外科介入神经放射治疗技术操作规范2023版.pdf VIP
- 《IE基础知识培训》PPT课件.ppt
- 神经系统体格检查演示课件.ppt
- 《财经法规与会计职业道德》习题答案及解析.pdf VIP
- 租赁合同模板下载打印5篇.docx
- 专题1.2 全等图形和全等三角形(分层练习)-2023-2024学年八年级数学上册基础知识专项突破讲与练(苏科版).docx VIP
- 《时间序列分析》PPT课件(全).pptx
- 电大一网一《网络存储技术》形考任务三:基于iSCSI传输的配置与管理形考任务三:基于iSCSI传输的配置与管理(1).docx VIP
- 学校“四个一”突发事件应急处置工作机制范文(6篇).pdf VIP
- 饱和聚酯培训资料.ppt
文档评论(0)