2010上交:计算表达式
2016-04-08 23:24
323 查看
题目描述:
对于一个不存在括号的表达式进行计算
输入:
存在多种数据,每组数据一行,表达式不存在空格
输出:
输出结果
样例输入:
样例输出:
简洁代码:
对于一个不存在括号的表达式进行计算
输入:
存在多种数据,每组数据一行,表达式不存在空格
输出:
输出结果
样例输入:
6/2+3+3*4
样例输出:
18
#include <iostream> #include <stack> using namespace std; typedef int TYPE; const int MAXN=1005; char buf[MAXN]; bool isNum(char ch) { return '0'<=ch&&ch<='9'; } int priority(char ch) { switch(ch) { case '+':return 1; case '-':return 1; case '*':return 2; case '/':return 2; } } TYPE cal(TYPE x,TYPE y,char ch) { switch(ch) { case '+':return x+y; case '-':return x-y; case '*':return x*y; case '/':return x/y; } } int main() { while(cin>>buf) { stack<TYPE> it; stack<char> op; TYPE e=0; for(int i=0;buf[i];i++) { if(isNum(buf[i])) { e*=10; e+=(buf[i]-'0'); } else { it.push(e); e=0; if(op.empty()) { op.push(buf[i]); } else { char now=buf[i]; char ctp=op.top(); int np=priority(now); int tp=priority(ctp); if(np>tp) { op.push(now); } else { do { char ch=op.top();op.pop(); TYPE y=it.top();it.pop(); TYPE x=it.top();it.pop(); TYPE z=cal(x,y,ch); it.push(z); }while(!op.empty()&&np<=priority(op.top())); op.push(now); } } } } it.push(e); while(!op.empty()) { char ch=op.top();op.pop(); TYPE y=it.top();it.pop(); TYPE x=it.top();it.pop(); TYPE z=cal(x,y,ch); it.push(z); } TYPE res=it.top(); cout<<res<<endl; } return 0; }
简洁代码:
#include <cstdio> using namespace std; const int MAXN=1005; int e[MAXN],top; int main() { int x; char op; while(scanf("%d",&x)!=EOF) { top=0; e[top++]=x; while(scanf("%c",&op)!=EOF) { if(op=='\n') break; scanf("%d",&x); switch(op) { case '+':e[top++]=x;break; case '-':e[top++]=-x;break; case '*':e[top-1]*=x;break; case '/':e[top-1]/=x;break; } } int res=0; for(int i=0;i<top;i++) { res+=e[i]; } printf("%d\n",res); } return 0; }
相关文章推荐
- Python3爬虫之爬取某一路径的所有html文件
- web框架--flask
- 用 Express4 写一个简单的留言板
- 剑指Offer--004-替换空格
- C++11中的bind与lambda比较
- PHP的单个文件上传、多个单文件上传、多文件上传
- QT5 Opengl (八,绘制雾的效果)
- Windows 10上快速尝鲜bash on Ubuntu
- JVM内存管理和JVM垃圾回收机制
- 对团队项目的意见以及对项目需求的分析
- ListView的优化
- …
- 判断微信内置浏览器的UserAgent
- 2010上交:最小面积子矩阵
- SFB公开课:TMG/IISARR/Web Application Proxy/发布UC(Lync/SFB)-2
- ORACLE put和put_line区别
- mysql
- Lean web services using C, FastCGI and MySQL
- 个人开发者应该知道的UI库
- 浏览器IFrame出Refused to display 'URL' in a frame because it set 'X-Frame-Options' to 'DENY' 的错