朋友求助

P1449 后缀表达式

wangxinlong_orange @ 2022-05-03 20:49:04

#include<iostream>
#include<stack>
using namespace std;
stack <int> a;
string s;
int b=1,c,d=0,e;
int main()
{
    for(int i=1;;i++)
    {
        cin>>s[i];
        if(s[i]=='.')
        {
            for(int j=b;j<=i-1;j++)
            {
                d=d*10+s[j]-'0';
            }
            a.push(d);
            d=0;
            b=i+1;
            continue;
        }
        if(s[i]=='+')
        {
            b++;
            c=a.top();
            a.pop();
            e=a.top();
            a.pop();
            a.push(e+c);
            continue;
        }
        if(s[i]=='-')
        {
            b++;
            c=a.top();
            a.pop();
            e=a.top();
            a.pop();
            a.push(e-c);
            continue;
        }
        if(s[i]=='*')
        {
            b++;
            c=a.top();
            a.pop();
            e=a.top();
            a.pop();
            a.push(e*c);
            continue;
        }
        if(s[i]=='/')
        {
            b++;
            c=a.top();
            a.pop();
            e=a.top();
            a.pop();
            a.push(e/c);
            continue;
        }
    }
    cout<<a.top();
    return 0;
}

by wangxinlong_orange @ 2022-05-03 20:50:17

额,这个是我一同学的代码,最后一个点过不去,但本地测试是对的,为啥啊。


by wangxinlong_orange @ 2022-05-03 20:50:57

情况


by ZepX_D @ 2022-05-03 20:59:18

#include<iostream>
#include<stack>
using namespace std;
stack <int> a;
string s;
int c,d=0,e;
int main()
{
    cin>>s;
    int len=s.size()-1;
    for(int i=0;i<len;i++)
    {
        if (s[i]>='0' && s[i]<='9')
            d=d*10+s[i]-48;
        if (s[i]=='.')
        {
            a.push(d);
            d=0;
        }
        if(s[i]=='+')
        {
            c=a.top();
            a.pop();
            e=a.top();
            a.pop();
            a.push(e+c);
        }
        if(s[i]=='-')
        {
            c=a.top();
            a.pop();
            e=a.top();
            a.pop();
            a.push(e-c);
        }
        if(s[i]=='*')
        {

            c=a.top();
            a.pop();
            e=a.top();
            a.pop();
            a.push(e*c);
        }
        if(s[i]=='/')
        {
            c=a.top();
            a.pop();
            e=a.top();
            a.pop();
            a.push(e/c);
        }
    }
    cout<<a.top();
    return 0;
}

by ZepX_D @ 2022-05-03 21:00:21

@柑橘 应该是玄学问题,直接输入整个字符串遍历就好


by wangxinlong_orange @ 2022-05-03 21:01:59

我也是用这种方法做的,但她想知道为啥QAQ,我也没办法啊是在不行就去找她吧


by HarunluoON @ 2022-05-03 21:07:11

试试开个O2?

因为我也曾经最后一个点W掉


|