




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程实验(利用堆栈实现简单计算器)代码共4个文件/main.cc文件#include #include stack.h#include opretor.husing namespace std;void main()Stack1 stack1;Stack2 staxk2;char s50;stack1.Push(=);cout 请输入正确的算术式(正数计算,以=结尾):s;if(check(s)Calculate(s,stack1,staxk2);elsecout 输入错误!endl;system (pause);/stack.h文件#ifndef STACK_H#define STACK_H#define STACK_INIT_SIZE 100#define STACKINCREMENT 10class Stack1private:char *top;char *base; int stacksize;int size;public:Stack1();Stack1();bool IsFull();bool IsEmpty();void Push(char e);char Pop();char Gettop(char x);int getsize();class Stack2private:double *top;double *base; int stacksize;int size;public:Stack2();Stack2();bool IsFull();bool IsEmpty();void Push(double e);double Pop();double Gettop(double x);int getsize();#endif;/stack.cc文件#include stack.h#include Stack1:Stack1()base = (char *)malloc(STACK_INIT_SIZE*sizeof(char);top = base ;stacksize = STACK_INIT_SIZE;size = 0;Stack1:Stack1()free (base);bool Stack1:IsFull()if(top - base = stacksize)return true;else return false;bool Stack1:IsEmpty() if (top = base) return true; else return false; void Stack1:Push(char e) if(top - base = stacksize) base = (char *) realloc ( base, (stacksize + STACKINCREMENT) * sizeof (char);top = base + stacksize;stacksize += STACKINCREMENT; *top+ = e; size+; char Stack1:Pop() char c; c = *(-top); size-; return c; char Stack1:Gettop(char x) if(!IsEmpty() x = *(top-1); return x; else return o; int Stack1:getsize()return size; Stack2:Stack2()base = (double *)malloc(STACK_INIT_SIZE*sizeof(double);top = base ;stacksize = STACK_INIT_SIZE;size = 0;Stack2:Stack2()free (base);bool Stack2:IsFull()if(top - base = stacksize)return true;else return false;bool Stack2:IsEmpty() if (top = base) return true; else return false;void Stack2:Push(double e) if(top - base = stacksize) base = (double *) realloc ( base, (stacksize + STACKINCREMENT) * sizeof (double);top = base + stacksize;stacksize += STACKINCREMENT; *top+ = e; size+; double Stack2:Pop()double c; c = *(-top); size-; return c;double Stack2:Gettop(double x) if(!IsEmpty() x = *(top-1); return x; else return 0;int Stack2:getsize()return size;/opretor.h文件#ifndef OPRETOR_H#define OPRETOR_H#include stack.hbool check(char ch);double exchange(char str,int dot);void Calculate(char ch,Stack1 stack1,Stack2 stack2);double calculatein(double x,double y,char opr);char precede_op(char a,char b);#endif;/opretor.cc文件#include opretor.h#include using namespace std;struct evaluationunionchar opr;double num;u;char c;bool check(char ch)if(ch09)return false;elsereturn true;double exchange(char str,int dot) /将字符串转化为小数int i,zs;double xs;double re;if(dot=0;i-) re+=(stri-0)*zs; zs*=10; else /若包含小数部分 zs=1;xs=0.1;re=0;for(i=dot-1;i=0;i-) re+=(stri-0)*zs; zs*=10; for(i=dot+1;stri!=0;i+) re+=(stri-0)*xs; xs*=0.1; return re;double calculatein(double x,double y,char opr)double s;switch(opr)case +:s=x+y;break;case -:s=x-y;break;case *:s=x*y;break;case /:s=x/y;break;default:return 0;return s;char precede_op(char a,char b)switch(a)case +:case -:if(b=+|b=-|b=)|b=)return ;else return ;case *:case /:if(b=()return ;case (:if(b=)return =;elsereturn ;case ):if(b=)return ;case =:if(b=)return =;elsereturn =0&chi=0&chi=9|chi=.) if(chi=.)dot=j;ssj+=chi;i+;ssj=0;nn=exchange(ss,dot);evalk.c=N;evalk.u.num=nn;k+;i-;elseevalk.c=O;evalk.u.opr=chi;k+;j=0;for (i=0;ik;i+)if (evali.c=N)cout evali.u.numendl;/stack2.Push(evali.u.num);elsecout evali.u.oprendl;/stack1.Push(evali.u.opr);coutendlendl; for (i=0;i=2)switch(precede_op(e=s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年办公软件操作中级水平考试模拟题及答案解析
- 2025年中学化学教师招聘考试重点知识点梳理与预测题解析
- 2025年中国邮政客户经理招聘考试模拟试题及备考指南
- 2025年铁基及铁镍基非晶合金项目发展计划
- 2025年柔性树脂版合作协议书
- 2025年频率测量仪表项目合作计划书
- 2025年港口业投资项目合作计划书
- 2025年超多道数字地震仪项目建议书
- 2025年自动包装设备项目建议书
- 跨境电商物流 题库试题及答案 任务五 跨境电商出口货物包装
- 德州市禹城市事业单位引进青年人才笔试真题2024
- 新版人教版八年级上册生物全册教案教学设计含教学反思
- 2025年陪诊师资格证考试题库(附答案)
- 2025年人教版音乐四年级上册教学计划(含进度表)
- 2025山西晋中昔阳县文化旅游发展有限责任公司社会招聘15人笔试备考题库及答案解析
- 2025-2026学年统编版(2024)初中历史八年级上册教学计划及进度表
- 妇科抗生素使用课件
- 成人2型糖尿病口服降糖药联合治疗专家共识解读 2
- 高中物理课程标准解读与教学建议
- 2025-2026学年统编版小学语文五年级上册教学计划及进度表
- 解读《医务人员职业道德准则(2025年版)》(含准则全文)
评论
0/150
提交评论