收藏 分享(赏)

表达式求解.doc

上传人:dwy79026 文档编号:7412208 上传时间:2019-05-16 格式:DOC 页数:8 大小:134KB
下载 相关 举报
表达式求解.doc_第1页
第1页 / 共8页
表达式求解.doc_第2页
第2页 / 共8页
表达式求解.doc_第3页
第3页 / 共8页
表达式求解.doc_第4页
第4页 / 共8页
表达式求解.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、表达式的求解一、设计课题表达式的求解二、需求分析1、用一个一维数组存放从键盘输入的表达式;2、表达式中可包含:加(+) 、减(- ) 、乘(*) 、除(/ ) 、单目减(-) 、乘方() 、括号(,) )等运算符。3、 要对输入的表达式进行检查,看是否是合格的表达式,如遇到错误则终止,不进行计算;例如:括号不配对、除数不为零等;三、概要设计 1、定义栈的抽象数据类型定义:ADT Stack数据对象: D=ai| aiDateType,i=1,2, ,n,n=0数据关系: R1=| ai-1,aiD,i=2,n基本操作:InitStack(typedef int SElemType;typede

2、f struct/栈的定义 SElemType *base;SElemType *top;int stacksize;SqStack;Status InitSqStack(SqStack if(!S.base) exit(OVERFLOW);S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;Status Push(SqStack if(!S.base) exit(OVERFLOW);S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;*S.top+=e;return OK;Status P

3、op(SqStack elsee=*-S.top;return OK;Status GetTop(SqStack S)/取栈顶元素,用 e 带回if(S.top = S.base)return ERROR;elsereturn *(S.top-1);Status Match(char *str)/括弧、字符范围匹配SqStack S;int hasErr=0,i=0;SElemType e;InitSqStack(S);char ch;while(ch=*(str+i)!=# break;case ):if(S.top=S.base)hasErr=1;break;elsePop(S,e);if

4、(e!=()hasErr=1;break;break;+i;if(!(hasErr=0 return FALSE;for(i=0;(ch=*(str+i)!=#;+i)if(ch=(|ch=)|ch=+|ch=-|ch=*|ch=/|ch=%|ch=|ch=#|(ch-0)=0else return ;case :if(=b)return ;case (:if()=b)return =;else return 9 )int theta,x, a,b;switch(Precede(GetTop(OPTR),ch)/比较栈顶运算符与 c 的优先级case :Pop(OPTR,theta);Pop(

5、OPND,b);Pop(OPND,a);Push(OPND,Operate(a,theta,b);break;elsewhile(ch-0) = 0 +i;ch=*(str+i);Push(OPND,n);/操作数直接入栈return GetTop(OPND);int main()char str200;printf(“请输入表达式,以#结束:n“);scanf(“%s“,str);strstrlen(str)+1=0;if(FALSE = Match(str)printf(“重新输入表达式:n“);scanf(“%s“,str);strstrlen(str)+1=0;printf(“表达式的值为:%dn“,CalculataExpression(str);五、测试结果1、六、附录表达式.cpp七、评价 由于时间仓促 经验不足还有很多功能没有实现完善。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报