Prefix expression - how a string separated by spaces

 1 #include<iostream>
 2 #include<cstdlib>
 3 #include<stack>
 4 #include<string>
 5 #include<sstream> 
 6 using namespace std;
 7 stack<double>s;
 8 char a[100][20];
 9 int main(){
10     string str;
11     getline(cin, str);
12     istringstream iss(str);
13     int i = 0;
14     while(!iss.eof()){
15         iss>>a[i++];
16     }
17     i--;
18     for(;i>=0;i--){
19         if(atof(a[i])!=0)
20             s.push(atof(a[i]));
21         else{
22             string si = a[i];
23             double d1 = s.top();
24             s.pop();
25             double d2 = s.top();
26             s.pop();
27             if(si=="*")d1*=d2;
28             else if(si=="+")d1+=d2;
29             else if(si=="-")d1-=d2;
30             else if(si=="/")d1/=d2;
31             s.push(d1);
32         }
33     }
34     printf("%f\n",s.top());
35     return 0;
36 }

Note: The main use is that standard yellow lines!

very useful!

Guess you like

Origin www.cnblogs.com/fangziyuan/p/12151791.html