表达式求值
来源:互联网 发布:windows打war包 编辑:程序博客网 时间:2024/05/29 03:46
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<stack>#include<queue>#include<map>#include<cmath>#include<cstdlib>using namespace std;stack<int> number;stack<char> oper;string s;int main(){ cin>>s; s+=')'; oper.push('('); for(int i=0;i<s.length();) { if(s[i]>='0'&&s[i]<='9') { int num=0; while(s[i]>='0'&&s[i]<='9') { num*=10; num+=s[i]-'0';i++; } number.push(num); continue; } else { if(s[i]=='+'||s[i]=='-') { if(oper.top()=='(') oper.push(s[i]); else { int number1,number2; number1=number.top(); number.pop(); number2=number.top(); number.pop(); if(oper.top()=='+') number.push(number1+number2); else if(oper.top()=='-') number.push(number2-number1); else if(oper.top()=='*') number.push(number1*number2); else number.push(number2/number1); oper.pop(); oper.push(s[i]); } i++; } else if(s[i]=='*'||s[i]=='/') { if(oper.top()=='('||oper.top()=='+'||oper.top()=='-') oper.push(s[i]); else { int number1,number2; number1=number.top(); number.pop(); number2=number.top(); number.pop(); if(oper.top()=='+') number.push(number1+number2); else if(oper.top()=='-') number.push(number2-number1); else if(oper.top()=='*') number.push(number1*number2); else number.push(number2/number1); oper.pop(); oper.push(s[i]); } i++; } else if(s[i]==')') { if(oper.top()=='(') { oper.pop(); i++; } else { int number1,number2; number1=number.top(); number.pop(); number2=number.top(); number.pop(); if(oper.top()=='+') number.push(number1+number2); else if(oper.top()=='-') number.push(number2-number1); else if(oper.top()=='*') number.push(number1*number2); else number.push(number2/number1); oper.pop(); } } else if(s[i]=='(') { oper.push(s[i]); i++; } } } printf("%d\n",number.top()); return 0;}
0 0
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 表达式求值
- 配置linux syslog服务器+配置syslog客户端
- PorterDuff.Mode及Xfermode详解
- 【c++】通过示例详细说明类的声明
- 指纹识别
- 网海茫茫,有你最暖
- 表达式求值
- iOS错误信息记录,不定时补充
- glob pattern
- 暴力解决配置HTTPS后无法使用Hermit
- poj_1679 The Unique MST(次小生成树)
- 有没有对JS比较熟悉的?
- git基础(二)-版本回退
- 定位问题
- [排序算法]--桶排序的Java实现