计算器-数据结构.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档