C++语计算器源代码.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语计算器源代码

C++语言编写。。 #includeiostream #includecmath #includestring using namespace std; const double pi = 3 const double e = 2.718281828459; 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//存储 运算符号 的栈 { char *top; char *base; }stack_char; stack_num S_num;//定义 stack_char S_char;//定义 char fu[18] = {\n, ), +, -, *, /, %, ^, Q, L, C, S, T, c, s, t, (}; int compare[1000];//表现出各运算符号的优先级 double shu[1000];//存储 数 的数组 double dai_result;//运算的结果,是为了处理 M 运算(简介函数里有M的定义) int biao = 0;//和dia_result 一样,为了处理 M 运算 char line[SIZE];//输入的所要计算的表达式 void init()//初始化 { 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(int i = 8; i = 15; i++) compare[fu[i]] = 6; compare[fu[16]] = 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; } 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.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 = 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

文档评论(0)

linjuanrong + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档