ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:18.81KB ,
资源ID:1931268      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1931268.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++语言计算器源代码.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++语言计算器源代码.docx

1、C+语言计算器源代码 C+语言编写。#include#include#includeusing namespace std;const double pi = 3.14159265;const double e = 2.9;const int SIZE = 1000;typedef struct node/为了处理符号而建立的链表(如: 1+(-2) char data; node *next;node;typedef struct stack_num/存储 数 的栈 double *top; double *base;stack_num;typedef struct stack_char/存

2、储 运算符号 的栈 char *top; char *base;stack_char;stack_num S_num;/定义stack_char S_char;/定义char fu18 = n, ), +, -, *, /, %, , Q, L, C, S, T, c, s, t, (;int compare1000;/表现出各运算符号的优先级double shu1000;/存储 数 的数组double dai_result;/运算的结果,是为了处理 M 运算(简介函数里有M的定义)int biao = 0;/和dia_result 一样,为了处理 M 运算char lineSIZE;/输入的

3、所要计算的表达式void init()/初始化 comparefu0 = -2;/用数字的大小表现出符号的优先级 comparefu1 = -1; comparefu2 = 2; comparefu3 = 2; comparefu4 = 4; comparefu5 = 4; comparefu6 = 4; comparefu7 = 5; for(int i = 8; i = 15; i+) comparefui = 6; comparefu16 = 7; S_num.base = (double*)malloc(sizeof(double)*SIZE);/为栈开辟空间 S_char.base

4、= (char*)malloc(sizeof(char)*SIZE);/同上 S_num.top = S_num.base; S_char.top = S_char.base;void push_num(double n)/数字进栈 * +S_num.top = n;void push_char(char c)/运算符号进栈 * +S_char.top = c;double pop_num()/数字出栈 double m = *S_num.top; S_num.top-; return m;char pop_char()/运算符号出栈 char cc = *S_char.top; S_char

5、.top-; return cc;char get_top_char()/得到运算符号的栈中最顶端的运算符号 return *S_char.top;double operate(double y, char c, double x)/对两个数计算(含是双目运算符:如 *, / 等等) double r; if(c = -) r = x - y; else if(c = +) r = x + y; else if(c = / & y != 0) r = x / y; else if(c = *) r = x * y; else if(c = ) r = 1; for(int i = 1; i =

6、 y; i+) r *= x; else if(c = %) int r0 = (int)x % (int)y; r = double(r0); return r;double operate_one(double one, char cc)/对一个数运算(含单目运算符:如log(L), sin(S) 等等) double r; if(cc = Q) r = sqrt(one); else if(cc = C) r = cos(one); else if(cc = S) r = sin(one); else if(cc = T) r = tan(one); else if(cc = c) r

7、= acos(one); else if(cc = s) r = asin(one); else if(cc = t) r = atan(one); return r;double operate_L(double a, double b, char dian)/求对数的值 double r = log(b) / log(a); return r;double compute()/对整个表达式的计算 char c;/表示运算符号 int p = 0;/用于shu+p, 先初始化 int i, j; init();/进行初始化 push_char(n); linestrlen(line) = n

8、; linestrlen(line)+1 = 0; if(biao) push_num(dai_result);/把运算的结果先进栈, 在这个结果的基础上继续进行运算 biao = 0; for(i = 0; linei != 0;)/把表达式中的数字字符串转化成可计算的数字 int flag = 0; int flag1 = 1;/标记是否是运算符号 / int flag2 = 1;/标记是否出现_; double h = 0; int ge;/位数 int biao_dian = 0;/是否是小数的类型 while(1) flag1 = 1; for(j = 0; j = 16; j+)

9、if(linei = fuj) flag1 = 0; break; if(linei = _) break; if(linei = .) i+; ge = 0; biao_dian = 1; 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; if(flag) if(biao_dian) int r = 1; for(int k = 1; k = 0) push_num(m); i+; else if(m = -1) c = +; else if(m = -2) c = -; else if(m = -3) c = *; else if(m = -4) c = /; else if(m = -5) c = %; else if(m = -6) c = ; else if(m = -7) c = Q; else if(m = -8) c = L; else if(m = -9) c = C; else if(m = -10) c = S; else if(m = -11) c = T;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1