c++实现的完整功能计算器

c++实现的完整功能计算器

ID:46797978

大小:22.53 KB

页数:11页

时间:2019-11-27

c++实现的完整功能计算器_第1页
c++实现的完整功能计算器_第2页
c++实现的完整功能计算器_第3页
c++实现的完整功能计算器_第4页
c++实现的完整功能计算器_第5页
资源描述:

《c++实现的完整功能计算器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一些说明:本程序支持基本的四则运算,三角函数运算(sin,cos,tan),指数运算,以及对数运算(lg,ln,log),取模运算,同时还支持括号!主函数流程:输入运算式子->判断是否有异常字符->对式子进行处理以便于计算->调用计算没有括号的式子的函数去除括号,即先计算括号里的子式->最后得到没有括号的式子,在调用函数计算得到结果。值得注意的是输入运算式子时,logab必须写成alogb,π必须写成pi,三角函数若不是tanN形式的话,要加上括号如tan(a+b),这是由于控制台输入的限制和为了输入后便于处理。子函数流程:从运算式子中读出数

2、字和字符,分别存于一个队列中->按顺序取出数字与字符,进行乘方运算,其他的再一次放回队列中->依次再取出进行三角函数和对数的运算,其他依次放回->再依次取出进行乘除和取模运算,其他依次放回->现在只剩下加减运算,依次取出计算,得到最后的结果。关键技术:一、c++的sstream流的运用,可以从中分别读出运算式子的数字与字符还有去除括号时将未处理字符(即非括号内的字符)以及括号内的子式处理结果输出到流中,便于迭代去除括号。二、对没括号的式子进行分级处理。三、将式子的字符以及数字分开处理。源代码如下:#include#incl

3、ude#include#include#include#definepi3.141592654doublecalculate(std::string);intmain(){//输入式子,存于s中std::strings;std::getline(std::cin,s);//抛出异常try{//判断是否有异常字符conststd::stringjubge="1234567890tansincos+-*/^%(

4、)loglnlgsqrtpi!";for(constauto&i:s)if

5、(jubge.find(i)==-1)throw1;////抛出异常//将三角函数名化为数字与&字符,便于识别和计算//以及将对数函数······//以及阶乘·········//以及开方·········//将pi/π化为数字size_tn=0;while((n=s.find("sin"))!=-1)s.replace(n,3,"1&");while((n=s.find("cos"))!=-1)s.replace(n,3,"2&");while((n=s.find("tan"))!=-1)s.replace(n,3,"3&");while(

6、(n=s.find("ln"))!=-1)s.replace(n,2,"4&");while((n=s.find("lg"))!=-1)s.replace(n,2,"5&");while((n=s.find("sqrt"))!=-1)s.replace(n,4,"6&");while((n=s.find("log"))!=-1)s.replace(n,3,"@");while((n=s.find("!"))!=-1)s.replace(n,1,"$7");while((n=s.find("pi"))!=-1)s.replace(n,2,std

7、::to_string(pi));//去除括号while(s.find("(")!=-1

8、

9、s.find(")")!=-1){std::ostringstreamuout;//存储未处理字符autoleft=s.begin();//记录左括号位置autoright=s.begin();//记录右括号位置while(right!=s.end()){//处理最里层括号里的字符if(*right=='('){if(*left=='('){for(autoi=left;i!=right;++i)uout<<*i;}left=right;}elseif

10、(*right==')'){if(*left!='(')throw2;////抛出异常uout<

11、doubleresult=calculate(s);//输出结果std::cout<

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

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

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