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掉