数据结构课程设计报告---算术表达式求值系统

数据结构课程设计报告---算术表达式求值系统

ID:12065947

大小:238.00 KB

页数:12页

时间:2018-07-15

数据结构课程设计报告---算术表达式求值系统_第1页
数据结构课程设计报告---算术表达式求值系统_第2页
数据结构课程设计报告---算术表达式求值系统_第3页
数据结构课程设计报告---算术表达式求值系统_第4页
数据结构课程设计报告---算术表达式求值系统_第5页
资源描述:

《数据结构课程设计报告---算术表达式求值系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《数据结构》课程设计报告算术表达式求值系统学号:姓名:班级:指导教师:成绩:完成时间:2011.01.02一、设计题目描述和要求121.问题:现在的计算器只能对简单的数进行运算,对复杂的多项表达式不能运算2.解决方案:设计一个表达式求值系统3.要求:以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用下表给出的算符优先关系,实现对算术四则混合运算表达式的求值。算术四则运算的规则:a.从左算到右b.先乘除,后加减c.先括号内,后括号外根据上述三条运算规则,在运算的每一步中,对任意相继出现

2、的算符θ1和θ2,都要比较优先权关系,它们优先关系如下表所示。一、系统分析与概要设计根据问题描述和要求,系统要求能够正确求出算术表达式的值。在进行算术表达式求值过程中,考虑到我们输入的是中缀表达式,采用后缀表达式比较容易计算,因此先将中缀表达式转换成后缀表达式。程序应该具有:“将算术表达式转化为后缀表达式”、“利用后缀表达式求值”等基本模块。由于有优先级的问题,根据优先级不同的运算符运算的次序是不同的,因此更具其优先级的大小抽象的将其定义为不同的大小。二、详细设计和编码1.数据类型定义表达式求值中

3、运算符对应优先级的定义struct12{charch;intpri;}lpri[7]={{'=',0},{'(',1},{'*',5},{'/',5},{'+',3},{'-',3},{')',6}},rpri[7]={{'=',0},{'(',6},{'*',4},{'/',4},{'+',2},{'-',2},{')',1}};//运算符优先级的定义运算符的存储struct{chardata[MaxSize];inttop;}op;//用栈存储运算符2.各模块算法描述(1)计算栈顶运算符对应的

4、数字i++结束returnlpri[i].prilpri[i].ch=opi<7?inti=0;输入:op开始NYNY(2)判断优先级12return0;return-1;结束return1;Leftpri(op1)='0'&&*exp<='

5、9'?!InOp(*exp)YYNpostexp[i++]=*exp;exp++;op.top++;op.data[op.top]=*exp;exp++;break;switch(c)NYc=-1?YNop.top--;exp++;break;c=0?YNpostexp[i++]='#'postexp[i++]=op.data[op.top];op.top--;break;c=1?YNop.data[op.top]!='='?Npostexp[i++]=op.data[op.top];op.top

6、--;Ypostexp[i]=''结束floata,b,c,d;st.top=-1;d=10*d+*postexp'0';postexp++;*postexp>='0'&&*postexp<='9'?d=0c=b/a;st.top++;st.data[st.top]=c;a!=0?*postexp=’/’?a=st.data[st.top];st.top--;b=st.data[st.top];st.top--;c=ba;st.top++;st.data[st.top]=c;break;a=s

7、t.data[st.top];st.top--;b=st.data[st.top];st.top--;c=a*b;st.top++;st.data[st.top]=c;break;switch(*postexp)a=st.data[st.top];st.top--;b=st.data[st.top];st.top--;a=st.data[st.top];st.top--;b=st.data[st.top];st.top--;c=a+b;st.top++;st.data[st.top]=c;brea

8、k;*postexp=''?*postexp=’*’?*postexp=’-’?*postexp=’+’?(4)后缀表达式求值12YNYNYNYNYNYNYN返回st.data[st.top]结束postexp++st.top++;st.data[st.top]=d;break;输出除零错误退出(5)主函数12输入:表达式expcharexp[20];charpostexp[];开始将中缀表达式exp转换为后缀表达式postexp输出:中缀表达式exp后缀表达式postexp表

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

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

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