Description
给出一个表达式,求出其值。表达式中只存在 +、-、*、三种运算,我们假设表达式是正确的,
且不存在除数为零的情况。
Input
第一行输入一个正整数 n(1<=n<=30) ,表示有表达式 n 个数(每个数均小于100),表达式中只有数值(都是大于零的数)
和运算符(包括+、-、*、=四种运算符,其中 = 只在表达式最后,表示一个表达式输出结束,且整个表达式不存在空格)
Output
表达式的值(表达式的值不会超出 double 的范围并保留两位小数)
Sample Input
5 1*2*3*4*5= 5 5-1-2+3+4=
Sample Output
120.00 9.00
HINT
使用STL的stack容易实现。
Append Code
#include<iostream>#include<stack>//remember top#include<algorithm>#include<iterator>#include<iomanip>using namespace std;int main(){ int n; while(cin>>n) { double a; char b; stack<double> d_sta; stack<char> c_sta; while(n--) { cin>>a>>b; if(!d_sta.empty())//d,c all can { if(c_sta.top()=='-') a=-a; else if(c_sta.top()=='*') { a*=d_sta.top(); d_sta.pop();//dessert } } d_sta.push(a); c_sta.push(b); } a=0; while(!d_sta.empty())//as if have not iterator { a+=d_sta.top(); d_sta.pop(); } cout<<fixed<<setprecision(2)<<a<<endl; } return 0;}