表达式计算-C++

表达式计算-C++

ID:46827619

大小:60.00 KB

页数:12页

时间:2019-11-28

表达式计算-C++_第1页
表达式计算-C++_第2页
表达式计算-C++_第3页
表达式计算-C++_第4页
表达式计算-C++_第5页
资源描述:

《表达式计算-C++》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、表达式计算-C++1,这是使用C++编写的一个表达式转后缀式再求值的一个类2,由于本人只是学生一个,这些都是为了验证学习上的东西,写得比较粗糙,只供初学者参考3,本类可以计算小数,负数。只能识别+-*/%^(^这是一个乘方运算符,用法如:2^16计算2的16次方,%这是一个求余运算符,使用规则和C++编译器类似),只能包含()这一种括号,并且在操作数和括号之间的运算符不能省略,每个运算符要明确给出4,本类负数处理的方法是采用:符号来替换,可以在表达式中输入(-)负号,但在字符检测函数来区分负号时,如

2、果检测出来是负号就会自动转换为(:)这个符号。这主要是为了在以后计算时可以不用每次来区分是不是负号,而只区分一次即可。也可以直接在表达式中用:这个符号来表示负号,识别函数可以直接识别而不需要区分和替换。要注意的是,(-)这种负号一定要使用表达式检查函数才能识别,如果不想使用检查函数,就只能用:来代替。5,本类的表达式检查函数会按照一定的规则来检测表达式输入是否合要求,如果有不合要求的字符或字符位置不合要求都会报错,并会指出是那一个字符,而且当函数检测到一个错误时不会立即停下,而会继续检测,只到表达式

3、结束。并输出表达式中的那些字符不合要求。6,单个0是不能出现在表达式中,但0.0可以,如果表达式中需要出0可以用0.0代替,但如:30/0.0这样的计算会在计算时给出错误提示。7,表达式中可以出现-(-(-13+5)+5)这样的深层负号计算,计算结果和VC++编译器结果一样8,本类在VC6.0,w7系统下编译通过并运算。9,本类中没有主动清空数据成员的方法,所以有使用时,要将类的对象定义在计算循环或函数内,这样每一次计算都会对对象进行创建和析构,不然会出现异常,当然你可以增加一个清空数据成员的方法。

4、//以下是ExpEvaluate.h类的头文件#ifndefExp_h#defineExp_h#include//字符串类头文件#include//STL栈头文件#include//STL队列头文件#include//STL向量头文件#include//STL链表头文件usingnamespacestd;classExpEvaluate{public:ExpEvaluate();//用于初始化错误列表voidExpInto(st

5、ring&Exp);//输入一个表达式intExpDetector();//字符串规则检测函数intExpIdentification(charExp);//数字运算符识别函数intExpPriority(charOpe);//返回运算符的优先级voidExpSuffix();//将表达式转为后缀式doubleExpCompute();//计算后缀表达式,并返回结果voidErrorBacktrack();//根据错误号返回相应错误private:stringexps;//表达式字符串stack

6、har>oper;//运算符栈stackoperand;//操作数栈queuepostfix;//后缀队列vectorerror;//错误列表listindex;//错误索引表intgrade;//错误标号stringerrorout;//错误输出缓冲区doubleOpReadop();//读取操作数,并返回转换后的结果doubleOpOrder(doubleop,doublex);//求op数的x次方};#endif//以下是.cpp实现文件#i

7、nclude"ExpEvaluate.h"#include"resource.h"#include//字符转换数字头文件#include#includeExpEvaluate::ExpEvaluate(){//初始错误列表error.resize(15);//为列表初始为15个元素grade=0;//初始标号为0,表示没有错误error.at(0)="操作数错误:操作数前不能是)右括号!";error.at(1)="操作数错误:0不可

8、以出现在操作的开始,也不能作为一个单独的操作数!";error.at(2)="操作数错误:小数点不能在一个操作数中重复出现!";error.at(3)="运算符错误:运算符前面必须是操作数或)右括号,并且运算符不能重叠!";error.at(4)="括号错误:左括号前面必须是运算符或左括号或负号!";error.at(5)="括号错误:右括号前面必须是操作数或右括号!";error.at(6)="括号错误:括号输入不匹配!";error.at(7)="分隔符错误:#号

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。