求大佬帮帮孩子呜呜呜

P1449 后缀表达式

cmqqxsb @ 2022-09-08 21:39:07

求救求救


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

by cmqqxsb @ 2022-09-08 21:39:48

33分过不了qwq


by plank_black @ 2022-09-08 21:54:18

 if(s[i]>='0'&&s[i]<='9')
    op+=s[i]-'0';

应该是

if(s[i]>='0'&&s[i]<='9')
     op=op*10+s[i]-'0';

因为数字不一定只是一位数


by scp020 @ 2022-09-08 22:03:22

教你一个小技巧

int nextInt(int& i)
{
    int number=0;
    while(s[i]!='.') number = number * 10 + s[i] - '0',i++;
    return number;
}

by scp020 @ 2022-09-08 22:03:43

截取数字


by cmqqxsb @ 2022-09-09 17:33:35

@plank_black 过了过了谢谢大佬(笔芯)


|