哪里错了

P1449 后缀表达式

醉月频中圣 @ 2020-01-13 19:52:42

#include<bits/stdc++.h>
using namespace std;
stack<int> st;
int main()
{
    string s;
    int t=0;
    cin>>s;
    int l=s.size();
    for(int i=0;i<=l-2;i++)
    {
        if(s[i]>'0'&&s[i]<'9')
        {
            t=s[i]+s[i-1]*10-'0';
        }
        else 
        {
            if(s[i]=='.')
        {
            st.push(t);
            t=0;
        }else
        {
            int x=st.top();
            st.pop();
            int y=st.top();
            st.pop();
            if(s[i]=='+')
            {
                t=y+x;
                st.push(t);
            }
            if(s[i]=='-')
            {
                t=y-x;
                st.push(t);
            }
            if(s[i]=='*')
            {
                t=y*x;
                st.push(t);
            }
            if(s[i]=='/')
            {
                t=y/x;
                st.push(t);
            }
        }
        }
    }
    cout<<t;
    }

by 辰星凌 @ 2020-01-13 20:13:25

Orz


by 醉月频中圣 @ 2020-01-13 20:13:56

@辰星凌 能不能帮我看看哪里错了orz


by Thomas_ @ 2020-01-13 20:30:14

%%%


by Dexhausration @ 2020-02-14 16:29:29

你写的是

if(s[i]>'0'&&s[i]<'9')
{
    t=s[i]+s[i-1]*10-'0';
}

但我猜你想写的是大于等于和小于等于 推荐用bool isdigit(char),标准库里的一个函数


by WanderingTrader @ 2020-03-01 12:50:43

for(int i=0;i<=l-2;i++)

应该是<=l-1吧


|