#include <iostream>
#include <string>
#include <stack>
using namespace std;
int getnum(string s,int &i)
{
int sum=0;
while(s[i]>='0'&&s[i]<='9')
{
sum=sum*10+s[i]-'0';
i++;
}
return sum;
}
void func()
{
string s;
while(cin>>s)
{
stack<int> st;
for(int i=0;i<s.size();)
{
if(s[i]>='0'&&s[i]<='9')
{
int t=getnum(s,i);
st.push(t);
}
else if(s[i]=='+')
{
i++;
int t=getnum(s,i);
st.push(t);
}else if(s[i]=='-')
{
i++;
int t=getnum(s,i);
st.push(-1*t);
}
else if(s[i]=='*')
{
i++;
int t=getnum(s,i);
int top=st.top();
st.pop();
st.push(top*t);
}else if(s[i]=='/')
{
i++;
int t=getnum(s,i);
int top=st.top();
st.pop();
st.push(top/t);
}
}
int sum=0;
while(!st.empty())
{
sum+=st.top();
st.pop();
}
cout<<sum<<endl;
}
}
int main(int argc, char *argv[])
{
//printf("Hello, world\n");
func();
return 0;
}
正确使用栈的练习
-
题目描述:
-
对于一个不存在括号的表达式进行计算
-
输入:
-
存在多种数据,每组数据一行,表达式不存在空格
-
输出:
-
输出结果
-
样例输入:
-
6/2+3+3*4
-
样例输出:
-
18