算术表达式求值(源码).doc

算术表达式求值(源码).doc

ID:51712958

大小:133.50 KB

页数:12页

时间:2020-03-15

算术表达式求值(源码).doc_第1页
算术表达式求值(源码).doc_第2页
算术表达式求值(源码).doc_第3页
算术表达式求值(源码).doc_第4页
算术表达式求值(源码).doc_第5页
资源描述:

《算术表达式求值(源码).doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、哈尔滨工业大学计算机科学与技术学院实验报告课程名称:数据结构与算法课程类型:必修实验项目名称:线性表实验实验题目:算术表达式求值设计成绩报告成绩指导老师一、实验目的1.学会线性表这一类数据结构的用法,了解线性表的逻辑结构、顺序存储结构的描述方法。2.掌握栈的结构特性和描述方法,熟练掌握栈的基本操作的实现方法。3.熟练掌握中缀表达式转后缀表达式的过程,进行表达式求值运算。4.练习程序的编写,使程序更规范。二、实验要求及实验环境实验要求:输入中缀表达式,转换成后缀表达式后求值。实验环境:Windows下的NetBeansIDE6.9.1三、设计思想(本程序中的用到的

2、所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)开始主程序流程图判断表达式格式是否正确?输入中缀表达式(String类型)去掉中缀表达式的空格错误正确将中缀表达式转换成后缀表达式以字符串形式输出后缀表达式表达式求值(栈实现)输出结果结束各模块之间的调用关系voidcompare(charch[],charth[])(去掉字符串空格)intmain()函数intJudge(charcharacter)(运算符优先级判断)intjudgeError(charth[])(判断输入格式是否正确)voidchangeFor(stringpre,charpos

3、t[],int&n)(将中缀表达式变后缀表达式)栈建立doublechtonum(stringstr,int&i)(将数字字符串转化成double型数据)doublecount_value(charpost[],int&m)(后缀表达式求值)四、测试结果五、系统不足与经验体会1.对于输入的中缀表达式的一些格式错误不能反馈出来,考虑的情况不全面。2.写程序时要及时的加上注释,便于修改。3.运用栈时要时刻注意栈是否为空,很多时候程序debug时出现这方面的错误,且不易察觉六、附录:源代码(带注释)栈的实现:/**File:STACKARRAY.h*Author:郝萌

4、*/#ifndefSTACKARRAY_H#defineSTACKARRAY_H#defineSIZE2000#includeusingnamespacestd;templateclassStack{public:Stack();boolisEmpty();Ttop();voidpush(Tvalue);voidpop();private:Ta[SIZE];intnumber;};templateStack::Stack(){number=0;}templatebool

5、Stack::isEmpty(){returnnumber==0;}templateTStack::top(){if(number==0)throwruntime_error("Stackisempty!");elsereturna[number];}templatevoidStack::push(Tc){number++;a[number]=c;}templatevoidStack::pop(){if(number==0)throwruntime_error("Stack

6、isempty!");elsenumber--;}#endif/*STACKARRAY_H*/============================================================================================================================================/**File:main.cpp*Author:Administrator**Createdon2011年10月31日,下午8:34*/#include#include

7、tream>#include"STACKARRAY.h"usingnamespacestdintJudge(charcharacter)//判断操作符的优先级{if(character=='+'

8、

9、character=='-')return1;elseif(character=='*'

10、

11、character=='/')return2;elseif(character=='('

12、

13、character==')')return0;elsereturn-1;}voidchangeFor(stringpre,charpost[],int&n){//将中缀表达式转化成后缀表

14、达式的函数inti=0,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。