算术表达式求值演示.doc

算术表达式求值演示.doc

ID:51266531

大小:35.00 KB

页数:15页

时间:2020-03-20

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

《算术表达式求值演示.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实习报告题目:算术表达式求值演示。一、需求分析1.以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。2.利用教科书表3.1给出的算符优先关系,实现对算数四则混合运算表达式的求值。3.仿照教科书的例子在求值中运用符栈、运算数栈、输入字符和主要操作的变化过程。4.程序执行的命令包括:(1)构造空栈;(2)判断符号优先级;(3)判断是否为七种运算符之一;(4)运算求解算术表达式。5.测试数据(1)3*(7-2);(2)8;(3)1+2+3+4;(4)88-1*5;(5)1024*4/8;(6)(20+2)*(6/2);(7)3

2、-3-3;(8)8/(9-9);(9)2*(6+2*(3+6*(6+6)));(10)(((6+6)*6+3)*2+6)*2;二、概要设计1.设定栈的抽象数据类型定义:ADTStack{数据对象:D={ai

3、ai∈CharSet,i=1,2,…,n,n≥0}数据关系:R1={

4、ai-1,ai∈D,i=2,…,n}基本操作:InitStack(&S)操作结果:构造一个空栈S。GetTop(S,&e)初始条件:栈S已存在。操作结果:若栈S不空,则以e返回栈顶元素。Push(&S,e)初始条件:栈S已存在。操作结果:在

5、栈S的栈顶插入新的栈顶元素e。Pop(&S,&e)初始条件:栈S已存在。操作结果:删除S的栈顶元素,用e返回其值。}ADTStack2.设定运算表达式的抽象数据类型为:ADTEvaluateExpression{数据对象:D={ai

6、ai为数字及运算符,i=1,2,…,n,n≥0}数据关系:R1={}基本操作:Precede(a1,a2)初始条件:字符a1,a2存在。操作结果:判定运算符的优先级In(d)初始条件:字符d存在。操作结果:判断c是否为七种运算符之一Operate(a,theta,b)初始条件:字符a,theta,b存

7、在。操作结果:运算表达式结果。}ADTEvaluateExpression3.本程序包含3个模块:(1)主程序模块:intmain(){初始化;do{接受命令:处理命令:}return0;}(2)栈模块——实现栈抽象数据类型(3)求解算术表达式模块——实现算术表达式数据类型各模块之间的调用关系如下:主程序模块↓栈模块↓求解算术表达式模块三、详细设计1.数据类型、字符类型。typedefdoubleSElemType;//数据类型charPrecede(chara1,chara2){charr;//字符类型}2.栈类型typedef

8、structSqStack{SElemType*base;SElemType*top;intstacksize;}SqStack;栈的基本操作设置如下:voidInitStack(SqStack&S)//构造一个空栈boolGetTop(SqStackS,SElemType&e)//若栈不空,则用e返回S的栈顶元素,并返回true;否则返回falseboolPush(SqStack&S,SElemTypee)//插入元素为e的新的栈顶元素boolPop(SqStack&S,SElemType&e)//若栈不空,则删除S的栈顶元素,

9、用e返回其值其中部分操作的算法:boolPush(SqStack&S,SElemTypee){//插入元素为e的新的栈顶元素if(S.top-S.base>=S.stacksize){//栈满,追加存储空间S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));if(!S.base)exit(-1);//存储空间分配失败S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;

10、}*S.top++=e;//top自增returntrue;}boolPop(SqStack&S,SElemType&e)//若栈不空,则删除S的栈顶元素,用e返回其值{if(S.top==S.base)returnfalse;e=*--S.top;//删除一个元素,top减一returntrue;}3.求解算术表达式的伪算法SElemTypeEvaluateExpression(){SqStackOPTR,OPND;//OPTR和OPND分别为运算符栈和运算数栈charc;charData[20];//定义此数组为了存放整数或小

11、数SElemTypea,b,d,e;InitStack(OPTR);//构造一个运算符栈InitStack(OPND);//构造一个运算数栈Push(OPTR,'');//将换行符压入栈底c=getchar();GetTop(OPTR,e);w

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

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

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