博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算术表达式求值
阅读量:6525 次
发布时间:2019-06-24

本文共 1963 字,大约阅读时间需要 6 分钟。

#include 
#define maxsize 50//定义最大的量struct{ char data[maxsize]; int top;}op;void trans(char exp[],char postexp[])//讲先序变为中序{ char ch; int i=0,j=0; ch=exp[i];i++; op.top=-1; while(ch!='\0') { switch (ch) { case '(': op.top++; op.data[op.top]=ch; break; case '+': case '-': while (op.top!=-1 && op.data[op.top]!='(') { postexp[j]=op.data[op.top]; j++; op.top--; } op.top++;op.data[op.top]=ch; break; case ')': while (op.data[op.top]!='(') { postexp[j]=op.data[op.top]; j++; op.top--; } op.top--; break; case '*': case '/': while (op.top!=-1 && op.data[op.top]!='(' && (op.data[op.top]=='*' || op.data[op.top]=='/')) { postexp[j]=op.data[op.top];j++; op.top--; } op.top++;op.data[op.top]=ch; break; case ' ':break; default: while(ch>'0'&&ch<'9') { postexp[j]=ch;j++; ch=exp[i];i++; } i--; postexp[j]='#';j++; } ch=exp[i];i++; } while(op.top!=-1) { postexp[j]=op.data[op.top];j++; op.top--; } postexp[j]='\0';}struct { float data[maxsize]; int top;}st;//********逆波兰式*********//int copputer(char postexp[])//{ int i=0; char ch; st.top=-1; ch=postexp[i]; float a=0.0; while (ch!='\0') { switch (ch) { case '+': st.data[st.top-1]=st.data[st.top]+st.data[st.top-1]; st.top--; break; case '-': st.data[st.top-1]=st.data[st.top-1]-st.data[st.top]; st.top--; break; case '*': st.data[st.top-1]=st.data[st.top]*st.data[st.top-1]; st.top--; break; case '/': st.data[st.top-1]=st.data[st.top-1]/st.data[st.top]; st.top--; break; case '#': break; default: a=0; while(ch>='0'&&ch<='9') { a=a*10+ch-'0'; i++;ch=postexp[i]; } i--; st.top++; st.data[st.top]=a; } i++;ch=postexp[i]; } printf("%f\n",st.data[st.top]); return st.data[st.top]; }//*****主函数****//int main(){ char exp[15]="(8+2-(1-3))"; char postexp[20]="\0"; trans(exp,postexp); copputer(postexp);}

 

转载于:https://www.cnblogs.com/lisongfeng9213/p/3367045.html

你可能感兴趣的文章
基本数据结构 - 栈和队列
查看>>
Linux软中断、tasklet和工作队列
查看>>
如何解决ORA-28002 the password will expire within 7 days问题(密码快过期)
查看>>
Asp.Net Core 轻松学-利用日志监视进行服务遥测
查看>>
LightSwitch社区资源搜集
查看>>
Android通讯录查询篇--ContactsContract.Data 二(续)
查看>>
IT人的自我导向型学习:开篇杂谈
查看>>
[原创]BizTalk动手实验系列目录
查看>>
HDU 4611Balls Rearrangement(思维)
查看>>
[LeetCode] Majority Element II
查看>>
minGW, cygwin, GnuWin32【C++的跨平台交叉编译问题】
查看>>
我的Dll(动态链接库)学习笔记(转)
查看>>
应用程序域
查看>>
有向图的拓扑排序算法JAVA实现
查看>>
HTML页面跳转的5种方法
查看>>
ArcGIS Engine开发之旅02--ArcGIS Engine中的类库
查看>>
李洪强-C语言5-函数
查看>>
开源监控利器grafana
查看>>
Android获取当前时间与星期几
查看>>
jenkins2 multibranch
查看>>