C++语言计算器源代码

C++语言计算器源代码

ID:37910020

大小:63.00 KB

页数:14页

时间:2019-06-02

C++语言计算器源代码_第1页
C++语言计算器源代码_第2页
C++语言计算器源代码_第3页
C++语言计算器源代码_第4页
C++语言计算器源代码_第5页
资源描述:

《C++语言计算器源代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++语言编写。。#include#include#includeusingnamespacestd;constdoublepi=3.14159265;constdoublee=2.718281828459;constintSIZE=1000;typedefstructnode//为了处理符号而建立的链表(如:1+(-2)){chardata;node*next;}node;typedefstructstack_num//存储数的栈{double*top;double*base;}stack_num;typede

2、fstructstack_char//存储运算符号的栈{char*top;char*base;}stack_char;stack_numS_num;//定义stack_charS_char;//定义charfu[18]={'',')','+','-','*','/','%','^','Q','L','C','S','T','c','s','t','('};intcompare[1000];//表现出各运算符号的优先级doubleshu[1000];//存储"数"的数组doubledai_result;//运算的结果,是为了处理M运算(简介函数里有M的定义)i

3、ntbiao=0;//和dia_result一样,为了处理M运算charline[SIZE];//输入的所要计算的表达式voidinit()//初始化{compare[fu[0]]=-2;//用数字的大小表现出符号的优先级compare[fu[1]]=-1;compare[fu[2]]=2;compare[fu[3]]=2;compare[fu[4]]=4;compare[fu[5]]=4;compare[fu[6]]=4;compare[fu[7]]=5;for(inti=8;i<=15;i++)compare[fu[i]]=6;compare[fu[16]]

4、=7;S_num.base=(double*)malloc(sizeof(double)*SIZE);//为栈开辟空间S_char.base=(char*)malloc(sizeof(char)*SIZE);//同上S_num.top=S_num.base;S_char.top=S_char.base;}voidpush_num(doublen)//数字进栈{*++S_num.top=n;}voidpush_char(charc)//运算符号进栈{*++S_char.top=c;}doublepop_num()//数字出栈{doublem=*S_num.top;

5、S_num.top--;returnm;}charpop_char()//运算符号出栈{charcc=*S_char.top;S_char.top--;returncc;}charget_top_char()//得到运算符号的栈中最顶端的运算符号{return*S_char.top;}doubleoperate(doubley,charc,doublex)//对两个数计算(含是双目运算符:如*,/等等){doubler;if(c=='-')r=x-y;elseif(c=='+')r=x+y;elseif(c=='/'&&y!=0)r=x/y;elseif(c==

6、'*')r=x*y;elseif(c=='^'){r=1;for(inti=1;i<=y;i++)r*=x;}elseif(c=='%'){intr0=(int)x%(int)y;r=double(r0);}returnr;}doubleoperate_one(doubleone,charcc)//对一个数运算(含单目运算符:如log(L),sin(S)等等){doubler;if(cc=='Q')r=sqrt(one);elseif(cc=='C')r=cos(one);elseif(cc=='S')r=sin(one);elseif(cc=='T')r=ta

7、n(one);elseif(cc=='c')r=acos(one);elseif(cc=='s')r=asin(one);elseif(cc=='t')r=atan(one);returnr;}doubleoperate_L(doublea,doubleb,chardian)//求对数的值{doubler=log(b)/log(a);returnr;}doublecompute()//对整个表达式的计算{charc;//表示运算符号intp=0;//用于shu[++p],先初始化inti,j;init();//进行初始化push_char('');line[

8、strlen(line)

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

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

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