一个简单的后最表达式计算

题目参考:信息学奥赛一本通398-1.2

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main(void) {
    
    string a;
    
    a="16 9 4 3 +*-@";
    
    //cin >> a;
    int len=a.length(),p1=0,p2=0,b[100],k=0;
    memset(b,0,sizeof(b));
    for(int i=0;  a[p2+1]>=48&&a[p2+1]<=57  ||  a[p2+1]==32; i++) {
        p2++;
        if(a[p2]==' ') {
            k++;
            for(int j=p1;j<=p2-1;j++) 
            {
                b[k]=b[k]*10+a[j]-48;
            }
            p1=p2+1;
        }
    }
    for(int i=0;i<=k;i++) cout << "b["<<i<<"]="<<b[i]<<"  ";
    cout << endl;
    int p=k;
    for(int i=p2+1;i<len;i++) {
    cout << a[i]<<endl;
        switch(a[i]) {
            
            case '+':
                b[p-1]=b[p]+b[p-1];
                p--;
                break;
            case '-':
                b[p-1]=b[p-1]-b[p];
                p--;
                break;
            case '*':
                b[p-1]=b[p]*b[p-1];
                p--;
                break;
            case '/':
                b[p-1]=b[p]/b[p-1];
                p--;
                break;
            
        }
        cout << "b["<<p<<"]="<<b[p]<<endl;
    }
    cout<<"ans = " << b[p]<<endl;
    return 0;
}

 

posted @ 2018-10-02 18:30  最美遇见你  阅读(357)  评论(0编辑  收藏  举报