醉月频中圣 @ 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吧