- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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() {
您可能关注的文档
- 洛江区中小学教师职业道德考核评估办法(试行)(Measures for the assessment and assessment of primary and secondary school teachers' professional ethics in Luojiang district (for Trial Implementation)).doc
- 洛阳桥《戏考》2007年01月31日新增(Luoyang bridge drama exam in 2007 01, 31 new).doc
- 洛克王国通天塔奖励以及1-100层攻略(Rock Kingdom Babel awards and 1-100 layers of Raiders).doc
- 洛阳铲用法(Luoyang spade usage).doc
- 河北工业大学教务处文件(Dean's office of Hebei University of Technology).doc
- 洪强宁谈豆瓣网技术架构(Hong Qiangning talk about the technical framework of broad bean net).doc
- 活动前期准备(Pre event preparation).doc
- 洛克宠物性格 信息(Rock pet character information).doc
- 活动互动游戏(Interactive game).doc
- 流动人口的利弊2(Advantages and disadvantages of floating population 2).doc
- 简单的校园宿舍网组建(Simple campus dormitory network formation).doc
- 简单的APPCan的调用(Simple APPCan call).doc
- 简单程序设计(Simple programming).doc
- 简历写作的七个黄金法则(Seven golden rules for Resume Writing).doc
- 简单配器法(Simple orchestration).doc
- 简媜 经典语录(Jian Zheng classics).doc
- 简易安全培训教材(Simple safety training materials).doc
- 简易疏通厕所下水道的堵塞方法(Simple method for dredging toilet sewer).doc
- 简易罐笼防坠器使用说明(Anti dropping device use simple cage).doc
- 简析商号权和商标权的冲突及其解决途径(A brief analysis of the conflict between trade name right and trademark right and its solution).doc
文档评论(0)