-
个人简介
个人简介
啥都木有
#include<bits/stdc++.h> using namespace std; stack <int> p1; stack <char> p2; map <char,int> m; string s; int l,n,i=0; int x,y; char b; int c(int x,int y,char b) { switch(b) { case '+':{ return x+y; } case '-':{ return x-y; } case '*':{ return x*y; } case '/':{ return x/y; } } return -1; } int main() { m['+']=1; m['-']=1; m['*']=2; m['/']=2; m['(']=0; cin>>s; l=s.size(); while(i<l) { if(s[i]>='0'&&s[i]<='9') { n=0; while(s[i]>='0'&&s[i]<='9') { n=n*10+(s[i]-'0'); i++; } p1.push(n); } else { if(s[i]=='(') { p2.push('('); } else if(s[i]==')') { while(p2.top()!='(') { b=p2.top(); p2.pop(); y=p1.top(); p1.pop(); x=p1.top(); p1.pop(); p1.push(c(x,y,b)); } p2.pop(); } else { while(p2.size()>0&&m[p2.top()]>=m[s[i]]) { b=p2.top(); p2.pop(); y=p1.top(); p1.pop(); x=p1.top(); p1.pop(); p1.push(c(x,y,b)); } p2.push(s[i]); } i++; } } while(p2.size()) { b=p2.top(); p2.pop(); y=p1.top(); p1.pop(); x=p1.top(); p1.pop(); p1.push(c(x,y,b)); } cout<<p1.top(); return 0; }
↑免费的C++计算器模板
(#604. 表达式计算)
升级版
(v3.0)
#include<bits/stdc++.h> using namespace std; stack <float> p1; stack <char> p2; map <char,int> m; string s; int l,i=0; float t,n,x,y; char b; float c(float x,float y,char b) { switch(b) { case '+':{ return x+y; } case '-':{ return x-y; } case '*':{ return x*y; } case '/':{ return x/y; } case '^':{ return pow(x,y); } } return -1; } int main() { m['+']=1; m['-']=1; m['*']=2; m['/']=2; m['^']=3; m['(']=0; cin>>s; l=s.size(); while(i<l) { if(s[i]>='0'&&s[i]<='9') { n=0; while(s[i]>='0'&&s[i]<='9') { n=n*10+(s[i]-'0'); i++; } if(s[i]=='.') { t=10; i++; while(s[i]>='0'&&s[i]<='9') { n+=(s[i]-'0')/t; t*=10; i++; } } p1.push(n); } else { if(s[i]=='(') { p2.push('('); } else if(s[i]==')') { while(p2.top()!='(') { b=p2.top(); p2.pop(); y=p1.top(); p1.pop(); x=p1.top(); p1.pop(); p1.push(c(x,y,b)); } p2.pop(); } else { while(p2.size()>0&&m[p2.top()]>=m[s[i]]) { b=p2.top(); p2.pop(); y=p1.top(); p1.pop(); x=p1.top(); p1.pop(); p1.push(c(x,y,b)); } p2.push(s[i]); } i++; } } while(p2.size()) { b=p2.top(); p2.pop(); y=p1.top(); p1.pop(); x=p1.top(); p1.pop(); p1.push(c(x,y,b)); } cout<<p1.top(); return 0; }
升级了:
1、小数点;2、支持^符号
-
通过的题目
-
最近活动
题目标签
- DFS
- 18
- 函数
- 9
- 递归
- 8
- 栈
- 8
- 二分答案
- 6
- 字符串
- 5
- BFS
- 5
- 前缀和
- 4
- 数据结构
- 3
- 搜索
- 3
- 模拟
- 3
- 贪心
- 3
- 基础循环
- 2
- 广搜
- 2
- 2024小学信息学竞赛复赛模拟
- 2
- 2012
- 1
- 数组排序
- 1
- 深基
- 1
- 结构体
- 1
- 分支
- 1