简单的中缀表达式的分析和求值(Analysis and evaluation of the simple infix expression).docVIP

简单的中缀表达式的分析和求值(Analysis and evaluation of the simple infix expression).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
简单的中缀表达式的分析和求值(Analysis and evaluation of the simple infix expression)

简单的中缀表达式的分析和求值(Analysis and evaluation of the simple infix expression) / ****************************************************************** *程序名:evaluate_expression.cpp *功能:进行简单的中缀表达式的分析和求值 *作者:阿雯 *时间:2013 / 9 / 27 *注:表达式只能包含这些符号:0-9 + - * /(),只支持个位整数运算 ******************************************************************* / #包含iostream 使用名称空间; / / ======================= / /简单的表达式语法分析 / /输入表达式的一个字符 返回可用符号一个类型值或/ / 0 int级(char){ / /给可用符号赋予一个类型值 如果(C = 48和C = 57){ // 0-9 返回1; } 开关(c){ 案例+: 案例“-”: 案例*: 案例“/”: 返回2; 案例: 返回3; 案例“”: 返回4; 违约: cout “非法字符:“ endl C “表达式只能包含这些符号:0-9 + - * /()” endl; 返回0; } } / /输入一个字符串,返回1(无语法错误)或0(语法错误) 布尔解析(char *s){ / /主要的分析函数 int i = 0,n = strlen(),结果; 如果(n=0){ cout “表达式不能为空!” endl; 返回0; } 否则如果(n=1){ / /只有一个数的表达式 返回1; } 当(i n-1){ / /检查相邻两个字符是否符合规则 如果(!年级(的[我])| |!级别(s i 1)] { / /含非法字符 返回0; } 结果=等级(s I)* 10 +级(s i 1)]; / /把类型值转换成数值以便判断 如果(结果= 11){ cout “不支持十位数和十位以上的数的运算:” 的[我]的[我的 + 1 ] endl; 返回0; } 如果(结果)!= 12和结果!= 14和结果!= 21和结果!= 23 及结果!= 31和结果!= 42和结果!= 33和结果!= 44){ / /不是以上组合则是表达式错误 cout “表达式输入错误:“的[我]的[我的 + 1 ] endl; 返回0; } ++; } int表示= 0;//左括号个数 对于(i = 0;i ;i + +){ 如果(括号 0){ / /不匹配的右括号在左括号左边 cout “位置错误 endl)!”; 返回0; } 如果(s i =“”(){ 括号+ +;/ /左括号数量加1 } 如果(s = i = ){){ 括号--; / /如果遇到右括号,则消掉一个左括号 } } 如果(括号!= 0){ / /有多余的括号 cout “括号不匹配!” endl; 返回0; } 如果(i)!= ) | |(的[我] 48 的[我] 57)){ / /最后的符号必须是右括号或数字 cout “表达式结尾不完整!” endl; 返回0; } 返回1; } / /完成表达式输入检查函数 / / ========================= / / ========================= / /表达式求值类:Opnd,Optr / /运算对象类 类公开的{ 私人: 浮动堆栈[ 100 ]; 栈的顶部; 公共: opnd() { 顶部= 1; } 空推(浮点n){ 这一点; } 浮pop() { 如果(此=顶部 = 0){ 返回这个堆栈; } cout “异常:公开的栈为空 endl,无法弹出数字!”; 返回- 1; } 浮get_top() { 如果(此=顶部 = 0){ 返回此堆栈[此顶部]; } cout “异常:公开的栈为空 endl,无法获取顶部数字!”; 返回- 1; } 浮get_value(char c){ 返回C 0”; } 布尔is_num(char c){ 返回(C = 48和C = 97); } show() { void cout endl “公开的堆栈[ ] =“; 对于(int = i 0;i 顶部+ 1;i + +){) cout “本-栈[我]; } cout endl “=”本-顶+ 1 endl; } }; / /运算符类 类算子{ 私人: 字符堆栈[ 100 ]; 栈的顶部; 公共: optr() { 这-栈[ 0 ] =“#”; 顶部= 0; } 无效推(char){ ; } pop() {

您可能关注的文档

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档