功能完备c++计算器(2)

功能完备c++计算器(2)

ID:22757017

大小:69.01 KB

页数:6页

时间:2018-10-31

功能完备c++计算器(2)_第1页
功能完备c++计算器(2)_第2页
功能完备c++计算器(2)_第3页
功能完备c++计算器(2)_第4页
功能完备c++计算器(2)_第5页
资源描述:

《功能完备c++计算器(2)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、#include#include#include#includeusingnamespacestd;enumtypes{DELIMITER=1,VARIABLE,NUMBER};//定义枚举类型把DELIMITER初试化为后面的相应的是前面值+1interror_type=-1;classcalculator{char*cal_p;//定义一个指向表达式的指针chartoken[80];//存储表达式中的字符变量chartok_type;//存储具体是什么类型voidcal_p2(double&result);voidc

2、al_p3(double&result);voidcal_p4(double&result);voidcal_p5(double&result);voidcal_p6(double&result);voidatom(double&result);//把字符串转换为浮点数voidget_token();//取得下一个字符voiderror(interr);//显示打印出错信息intisdelim(charc);//判断是否为分隔符public:calculator();//类的构造函数doublecal(char*exp);interror_type;//存储错误信息};//类构照函数的具体实

3、现calculator::calculator(){cal_p=NULL;//把exp_ptr的指针初始化为空error_type=-1;}//方法eval_exp的具体实现过程doublecalculator::cal(char*p){doubleresult;cal_p=p;//把传递过来的参数p赋给cal_pget_token();if(!*token){error(2);//输出没有任何表达式的错误信息return0.0;}cal_p2(result);if(*token){error(0);//lasttokenmustbenull}returnresult;}//两个变量字符是加

4、或者减操作voidcalculator::cal_p2(double&result){registercharop;doubletemp;cal_p3(result);while((op=*token)=='+'

5、

6、op=='-'){get_token();cal_p3(temp);switch(op){case'-':result=result-temp;break;case'+':result=result+temp;break;}}}//两个变量是乘或者除操作或者是取余voidcalculator::cal_p3(double&result){registercharop;double

7、temp;cal_p4(result);while((op=*token)=='*'

8、

9、op=='/'

10、

11、op=='%'){get_token();cal_p4(temp);switch(op){case'*':result=result*temp;break;case'/':if(temp==0)error(3);elseresult=result/temp;//除数为零的情况要考虑进去break;case'%':result=(int)result%(int)temp;break;}}}//进行^运算voidcalculator::cal_p4(double&result){double

12、temp,ex;registerintt;cal_p5(result);if(*token=='^'){get_token();cal_p4(temp);ex=result;if(temp==0.0){result=1.0;return;}for(t=(int)temp-1;t>0;--t)result=result*(double)ex;}}voidcalculator::cal_p5(double&result){registercharop;op=0;if((tok_type==DELIMITER)&&*token=='+'

13、

14、*token=='-'){op=*token;get_to

15、ken();}cal_p6(result);if(op=='-')result=-result;}//进行有括号的算法voidcalculator::cal_p6(double&result){if((*token=='(')){get_token();cal_p2(result);if(*token!=')'){error(1);}get_token();}elseatom(result);}//取得数值v

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

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

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