表达式计算-C++讲述.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
表达式计算-C讲述

表达式计算-C++ 这是使用C++编写的一个表达式转后缀式再求值的一个类 由于本人只是学生一个,这些都是为了验证学习上的东西,写得比较粗糙,只供初学者参考 本类可以计算小数,负数。只能识别+ - * / % ^ (^这是一个乘方运算符,用法如:2^16计算2的16次方,%这是一个求余运算符,使用规则和C++编译器类似),只能包含()这一种括号,并且在操作数和括号之间的运算符不能省略,每个运算符要明确给出 本类负数处理的方法是采用:符号来替换,可以在表达式中输入(-)负号,但在字符检测函数来区分负号时,如果检测出来是负号就会自动转换为(:)这个符号。这主要是为了在以后计算时可以不用每次来区分是不是负号,而只区分一次即可。也可以直接在表达式中用:这个符号来表示负号,识别函数可以直接识别而不需要区分和替换。要注意的是,(-)这种负号一定要使用表达式检查函数才能识别,如果不想使用检查函数,就只能用:来代替。 本类的表达式检查函数会按照一定的规则来检测表达式输入是否合要求,如果有不合要求的字符或字符位置不合要求都会报错,并会指出是那一个字符,而且当函数检测到一个错误时不会立即停下,而会继续检测,只到表达式结束。并输出表达式中的那些字符不合要求。 单个0是不能出现在表达式中,但0.0可以,如果表达式中需要出0可以用0.0代替,但如:30/0.0这样的计算会在计算时给出错误提示。 表达式中可以出现-(-(-13+5)+5)这样的深层负号计算,计算结果和VC++编译器结果一样 本类在VC6.0,w7系统下编译通过并运算。 本类中没有主动清空数据成员的方法,所以有使用时,要将类的对象定义在计算循环或函数内,这样每一次计算都会对对象进行创建和析构,不然会出现异常,当然你可以增加一个清空数据成员的方法。 //以下是ExpEvaluate.h类的头文件 #ifndef Exp_h #define Exp_h #include string //字符串类头文件 #include stack //STL栈头文件 #include queue //STL队列头文件 #include vector //STL向量头文件 #include list //STL链表头文件 using namespace std; class ExpEvaluate { public: ExpEvaluate(); //用于初始化错误列表 void ExpInto(string Exp); //输入一个表达式 int ExpDetector(); //字符串规则检测函数 int ExpIdentification(char Exp); //数字运算符识别函数 int ExpPriority(char Ope); //返回运算符的优先级 void ExpSuffix(); //将表达式转为后缀式 double ExpCompute(); //计算后缀表达式,并返回结果 void ErrorBacktrack(); //根据错误号返回相应错误 private: string exps; //表达式字符串 stackchar oper; //运算符栈 stackdouble operand; //操作数栈 queuechar postfix; //后缀队列 vectorchar * error; //错误列表 listint index; //错误索引表 int grade; //错误标号 string errorout; //错误输出缓冲区 double OpReadop(); //读取操作数,并返回转换后的结果 double OpOrder(double op,double x); //求op数的x次方 }; #endif //以下是.cpp实现文件 #include ExpEvaluate.h #include resource.h #include stdlib.h //字符转换数字

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档