2022年C++语言计算器源代码.pdf





《2022年C++语言计算器源代码.pdf》由会员分享,可在线阅读,更多相关《2022年C++语言计算器源代码.pdf(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+语言编写。#include #include #include usingnamespacestd; constdoublepi=3.14159265; constdoublee=2.718281828459; constintSIZE=1000; typedefstructnode/ 为了处理符号而建立的链表(如:1+(-2) chardata; node*next; node; typedefstructstack_num/ 存储数的栈 double*top; double*base; stack_num; typedefstructstack_char/ 存储运算符号的栈精品资料 -
2、 - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 26 页 - - - - - - - - - - char*top; char*base; stack_char; stack_numS_num;/ 定义stack_charS_char;/ 定义charfu18=n,),+,-,*,/,%, Q,L,C,S,T,c,s,t,(; intcompare1000;/表现出各运算符号的优先级doubleshu1000;/存储数的数组doubledai_result;/运算的结果,是为了处理M 运算(简介函数里有
3、M 的定义 ) intbiao=0;/和 dia_result一样,为了处理 M 运算charlineSIZE;/ 输入的所要计算的表达式voidinit()/ 初始化 comparefu0=-2;/ 用数字的大小表现出符号的优先级comparefu1=-1; comparefu2=2; comparefu3=2; comparefu4=4; comparefu5=4; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 26 页 - - - - - - - - - - comparefu6=4;
4、 comparefu7=5; for(inti=8;i=15;i+) comparefui=6; comparefu16=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;
5、doublepop_num()/数字出栈精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 26 页 - - - - - - - - - - doublem=*S_num.top; S_num.top-; returnm; charpop_char()/运算符号出栈 charcc=*S_char.top; S_char.top-; returncc; charget_top_char()/ 得到运算符号的栈中最顶端的运算符号 return*S_char.top; doubleoperate(dou
6、bley,charc,doublex)/ 对两个数计算 (含是双目运算符 :如*,/等等) doubler; if(c=-) r=x-y; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 26 页 - - - - - - - - - - elseif(c=+) r=x+y; elseif(c=/&y!=0) r=x/y; elseif(c=*) r=x*y; elseif(c=) r=1; for(inti=1;i=y;i+) r*=x; elseif(c=%) intr0=(int)x%(i
7、nt)y; r=double(r0); returnr; doubleoperate_one(doubleone,charcc)/ 对一个数运算 (含单目运算符 :如 log(L),sin(S)等等) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 26 页 - - - - - - - - - - doubler; if(cc=Q) r=sqrt(one); elseif(cc=C) r=cos(one); elseif(cc=S) r=sin(one); elseif(cc=T) r=tan
8、(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; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 26 页 - - - - - - - - - - doublecompute()/对整个表达式的计算
9、 charc;/表示运算符号intp=0;/用于 shu+p,先初始化inti,j; init();/ 进行初始化push_char(n); linestrlen(line)=n; linestrlen(line)+1=0; if(biao) push_num(dai_result);/把运算的结果先进栈,在这个结果的基础上继续进行运算biao=0; for(i=0;linei!=0;)/ 把表达式中的数字字符串转化成可计算的数字 intflag=0; intflag1=1;/标记是否是运算符号/ intflag2=1;/标记是否出现 _; doubleh=0; 精品资料 - - - 欢迎下载
10、 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 26 页 - - - - - - - - - - intge;/位数intbiao_dian=0;/是否是小数的类型while(1) flag1=1; for(j=0;j=16;j+) if(linei=fuj) flag1=0; break; if(linei=_) break; if(linei=.) i+; ge=0; biao_dian=1; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - -
11、 - -第 8 页,共 26 页 - - - - - - - - - - if(linei=P) shu+p=pi; i+; break; if(linei=E) shu+p=e; i+; break; if(flag1) h=h*10+(linei-0); flag=1; i+; if(biao_dian) ge+; else break; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 26 页 - - - - - - - - - - if(flag) if(biao_dian) intr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 C+ 语言 计算器 源代码

限制150内