首页 数据结构表达式求值(可以求小数与多位数)

数据结构表达式求值(可以求小数与多位数)

举报
开通vip

数据结构表达式求值(可以求小数与多位数)四、实验步骤 #include "stdafx.h" #include #include #include #include #include #define STACK_INIT_SIZE 100 #define STACKINCREMENT  10 #define OPSETSIZE 7 typedef int Status; float Operate(float a, char theta, float b); Status In(char Test,char TestOp[7]); char ...

数据结构表达式求值(可以求小数与多位数)
四、实验步骤 #include "stdafx.h" #include #include #include #include #include #define STACK_INIT_SIZE 100 #define STACKINCREMENT  10 #define OPSETSIZE 7 typedef int Status; float Operate(float a, char theta, float b); Status In(char Test,char TestOp[7]); char precede(char Aop, char Bop); char OPSET[OPSETSIZE]={'+' , '-' , '*' , '/' ,'(' , ')' , '#'}; typedef struct{ char *base; char *top; int stacksize; }SqStackOPTR; typedef struct{ float *base; float *top; int stacksize; }SqStackOPND; Status InitStackOPTR(SqStackOPTR &S){    //初始化栈 S.base=(char *)malloc(sizeof(char) * STACK_INIT_SIZE); if(!S.base){ cout<<"初始化失败"; return false; } else{ S.top=S.base; S.stacksize=STACK_INIT_SIZE; return true; } } Status InitStackOPND(SqStackOPND &S){    //初始化栈 S.base=(float *)malloc(sizeof(float) * STACK_INIT_SIZE); if(!S.base){ cout<<"初始化失败"; return false; } else{ S.top=S.base; S.stacksize=STACK_INIT_SIZE; return true; } } void PushOPTR(SqStackOPTR &S,char e){        //栈顶压入一个运算符 *S.top=e; S.top++;  } void PushOPND(SqStackOPND &S,float e){        //栈顶压入一个数 *S.top=e; S.top++;  } char PopOPTR(SqStackOPTR &S,char &e){            //取栈顶元素 --S.top; e=*S.top; return e; } float PopOPND(SqStackOPND &S,float &e){            //取栈顶元素 --S.top; e=*S.top; return e; } Status GetTopOPTR(SqStackOPTR &S,char &e){ e=*(S.top-1); return e; } float GetTopOPND(SqStackOPND &S,float &e){ e=*(S.top-1); return e; } unsigned char Prior[7][7] = {    //  算符间的优先关系 '>','>','<','<','<','>','>', '>','>','<','<','<','>','>', '>','>','>','>','<','>','>', '>','>','>','>','<','>','>',    '<','<','<','<','<','=',' ', '>','>','>','>',' ','>','>', '<','<','<','<','<',' ','=' };        float EvaluateExpression(char*ex,int n1) {  // 算法3.4 // 设OPTR和OPND分别为运算符栈和运算数栈,OP为运算符集合。 SqStackOPTR  OPTR;    // 运算符栈,字符元素 SqStackOPND OPND;    // 运算数栈,实数元素 float a,b,*h,add=0,num,m; int i=0,n=0,j,k,m1=0; char theta,e,x,*H; h=new float[n1+1]; H=new char[n1+1]; InitStackOPTR(OPTR); e='#'; PushOPTR(OPTR, e); InitStackOPND(OPND); while(ex[i]!= '#' || GetTopOPTR(OPTR,x)!= '#') { k=1; if(ex[i]>='0'&&ex[i]<='9'||ex[i]=='.') { H[k]=ex[i];k++; for(k,j=i+1;ex[j]!='#';j++){ if(ex[j]>='0'&&ex[j]<='9'||ex[j]=='.'){ H[k]=ex[j];k++; } else break; }//for for(i=1;i':  // 退栈并将运算结果入栈 PopOPTR(OPTR,theta); PopOPND(OPND,b);  PopOPND(OPND,a); m=Operate(a, theta, b); PushOPND(OPND,m); break; } // switch }//els } // while return GetTopOPND(OPND,m); } // EvaluateExpression float Operate(float a,char theta, float b) { switch(theta) { case '+': return a+b;break; case '-': return a-b;break; case '*': return a*b;break; case '/': return a/b;break; default : return 0;break; } }    Status In(char Test,char TestOp[7]) { bool status=false; for (int i=0; i< OPSETSIZE; i++) { if (Test==TestOp[i]) status= true; } return status; } int ReturnOpOrd(char op,char TestOp[7]) { int i,n=0; for(i=0; i< OPSETSIZE; i++) { if (op==TestOp[i])  n=i; } return n; } char precede(char Aop, char Bop) { return Prior[ReturnOpOrd(Aop,OPSET)][ReturnOpOrd(Bop,OPSET)]; } void main(){ int i,n,C=1;char *p; while(C==1){ cout<<"请输入 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式的长度(包括#):"; cin>>n; p=new char[n]; cout<<"请输入表达式(以#结束):"; for(i=0;i>p[i]; cout<<"运算结果是:"; for(i=0;i>C; } } 五、实验结果及分析 六、实验 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 通过本次实验学到了许多东西,首先编写程序要有耐心,期间有好几次都想到要放弃了,算法是正确的,但结果总是错误。但静下心来仔细考虑才发现是一个小错误、小失误导致。所以说耐心很重要。同时,和同学们探讨也是一个不错的 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ,毕竟每个人都有自己的方法,通过彼此学习可以互补。同时,要善于利用网上的资源,许多不清楚而知识可以在网上找到 答案 八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案 ,这也是一个不错的学习方法。最后:实践出真知。
本文档为【数据结构表达式求值(可以求小数与多位数)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_594886
暂无简介~
格式:doc
大小:28KB
软件:Word
页数:12
分类:互联网
上传时间:2019-02-11
浏览量:87