表达式求值源代码

上传人:wt****50 文档编号:34020396 上传时间:2018-02-20 格式:DOC 页数:8 大小:29KB
返回 下载 相关 举报
表达式求值源代码_第1页
第1页 / 共8页
表达式求值源代码_第2页
第2页 / 共8页
表达式求值源代码_第3页
第3页 / 共8页
表达式求值源代码_第4页
第4页 / 共8页
表达式求值源代码_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《表达式求值源代码》由会员分享,可在线阅读,更多相关《表达式求值源代码(8页珍藏版)》请在金锄头文库上搜索。

1、#include #include #include #include #include using namespace std;char Precede(char a, char b) /判断运算符优先级int i, j;char Table88 = ,+,-,*,/,(,),=,+,-,*,/,(, ,=, num_stack; /数字栈stack oper_stack; /运算符栈oper_stack.push(=); /将等号入栈到运算符栈while(si!= | oper_stack.top()!=) /对表达式 a 进行计算if(si=0 & si:theta = oper_sta

2、ck.top(); /从栈中弹出一个运算符进行计算oper_stack.pop();b = num_stack.top(); /弹出两个数字,注意顺序,先弹出的数是第二个操作数num_stack.pop();a = num_stack.top();num_stack.pop();if ( Calcu_temp(a, theta, b, r) ) /计算并判断是否有除数等于 0 的情况num_stack.push(r); /若正常,则将结果压入栈中elsereturn false; /出现除数为 0 的情况,返回错误信息break; result = num_stack.top(); /最后数字

3、栈中的数即为表达式的最终结果return true;bool Check(char s) /检查表达式括号是否匹配int flag=0, i;for(i=0; si!=0; i+) if(si=()flag+;if(si=)flag-;if(flag)return false;elsereturn true;int main() int i, j;char s1210, s2210;double result;printf( 数据结构实训-表达式求值:n);printf(编程人员:桂林电子科技大学信息科技学院:n);printf( 1151220114 章贵萍n);printf(请输入表达式:

4、n);while(gets(s1)!=NULL) /输入表达式if(strlen(s1)=1 & s10=0)break;for(i=0,j=0; s1i!=0; i+) /将表达式转换为规格化的表达式,并在末尾加上“=” ,保存在 s2 中if(s1i= )continue;s2j+ = s1i;s2j+ = =;s2j = 0;if(Check(s2) /检查括号是否匹配if(Calculate(s2, result) /计算并检查表达式中是否出现除数为 0 的情况printf(%lfn,result);elseprintf(被除数为零,该表达式无效!n); elseprintf(该表达式括号不匹配!n);return 0;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号