求助大佬!只有16分

P1449 后缀表达式

acmwriter @ 2023-05-20 16:23:25

#include<bits/stdc++.h>
using namespace std;
int main(){
    string s;
    cin>>s;
    stack<int>a;
    for(int i=0;i<s.size();i++){
        int b,c;
        if(s[i]>='0'&&s[i]<='9')
           a.push(s[i]-'0');
        if(s[i]=='-'){
            c=a.top();
            a.pop();
            b=a.top();
            a.pop();
            a.push(b-c);
        }
        else if(s[i]=='*'){
            c=a.top();
            a.pop();
            b=a.top();
            a.pop();
            a.push(b*c);
        }
        else if(s[i]=='+'){
            c=a.top();
            a.pop();
            b=a.top();
            a.pop();
            a.push(b+c);
        }
        else if(s[i]=='/'){
            c=a.top();
            a.pop();
            b=a.top();
            a.pop();
            a.push(b/c);
        }
    }
    cout<<a.top();
    return 0;
}

by Prolystic @ 2023-05-20 16:37:10

if(s[i]>='0'&&s[i]<='9')
           a.push(s[i]-'0');

这段不对,操作数不一定是一位数,还有两位数三位数等等等等,所以当这一位是字符 '.' 时才可以把操作数压栈。


by Prolystic @ 2023-05-20 16:37:57

@acmwriter


by acmwriter @ 2023-05-20 17:07:19

@Question_Terminator 知道了,谢谢大佬!


|