九度1019 简单计算器

来源:互联网 发布:java图片压缩开源框架 编辑:程序博客网 时间:2024/05/16 05:02
#include<algorithm>#include<cstdio>#include<iostream>#include<string>#include<cstring>#include<vector>#include<set>#include<map>#include<queue>#include<stack>#include<climits>#define eps 1e-9#define ll long longusing namespace std;int op[300];int main(){double x,y;stack<double>numb;stack<char>exp;op['-'] = op['+'] = 2;op['*'] = op['/'] = 1;while(cin>>x){while(!numb.empty())numb.pop();while(!exp.empty())exp.pop();numb.push(x);char c = getchar();if(c == '\n')break;c = getchar();exp.push(c);getchar();while(cin>>x){numb.push(x);c = getchar();if(c == '\n')break;c = getchar();while(!exp.empty()&&op[c]>=op[exp.top()]){char cc = exp.top();x = numb.top();numb.pop();y = numb.top();numb.pop();if(cc == '+')numb.push(y+x);if(cc == '-')numb.push(y-x);if(cc == '*')numb.push(y*x);if(cc == '/')numb.push(y/x);exp.pop();}exp.push(c);getchar();}while(!exp.empty()){char cc = exp.top();x = numb.top();numb.pop();y = numb.top();numb.pop();if(cc == '+')numb.push(y+x);if(cc == '-')numb.push(y-x);if(cc == '*')numb.push(y*x);if(cc == '/')numb.push(y/x);exp.pop();}if(numb.size()!=1)while(1);printf("%.2lf\n",numb.top());}return 0;}

0 0
原创粉丝点击