算术表达式求值(小数).doc

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

#include malloc.h #include sstream #include iostream.h #define STACK_INIT_SIZE 100 typedef double SElemType; typedef struct{ SElemType *base;//栈底指针 SElemType *top;//栈顶指针 double stacksize; }SqStack; double InitStack(SqStack S) //初始堆栈 { S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return 1; } SElemType GetTop(SqStack S) //获取顶部元素 { if(S.top==S.base) return 0; SElemType e=*(S.top-1); return e; } double Push(SqStack S,SElemType e) //压栈 { *S.top++=e; return 1; } double Pop(SqStack S,SElemType e) //出栈 { if(S.top==S.base) return 0; e=*--S.top; return 1; } //double ClearStack(SqStack S) //清空栈 //{ // S.top=S.base; // S.stacksize=STACK_INIT_SIZE; // return 1; //} //double StackEmpty(SqStack S) //判断栈是否为空 //{ // if(S.top==S.base) return 1; // return 0; //} ////////////////////////////////////////////////// char Preced(char t1,char t2);//声明 double Operate(double a, char theta, double b); int In(char *p)// 应在前面有定义typedef char SElemType; { // 判断c是否为运算符 switch(*p) {case+:return 1; case-:return 1; case*:return 1; case/:return 1; case(:return 1; case):return 1; case#:return 1; default:return 0; } } double EvaluateExpression(char *p){ //表达式求值,入口:表达式串,出口:计算结果值 double z; double a,b;//为方便计算栈中弹出的两个数的结果 double k; //计算小数点时用来记位置 double theta; char bijiao; SqStack S1; //S1存数据, SqStack S2; //S2存运算符 InitStack(S1); InitStack(S2); Push(S2,#); while(*p!=#||GetTop(S2)!=#){ if(!In(p)){//读输入的数据,进入数据 z=0; if(*p=0*p=9*p!=.){ //表达式中的数值可能不只一位数,求数值的小数点前面的数据 z=z*10+*p-48; p++; }//if if(*p==.){//假如遇到小数点时,进入下一个循环 k=0.1;p++; while(*p=0*p=9){//将小数点后的数据加入数值中 z+=(*p-48)*k;

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档