OJ_1101

#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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值