四则运算
调试发现递归有问题
sum调试的时候结果是对的
输出的时候却是错的
上代码
#include<iostream>
#include<stack>
using namespace std;
int result(const char *data)
{//pos定位遍历 分别读取数据 stack存
//递归括号
//读到数据 存num 根据上一个op操作
//取下一个op
int cache=0;
char op = '+';
stack<int> stk;
while(*data!='\0')
{
if(*data == '('|| *data == '['||*data == '{')
{
data++;
cache = result(data);
}
while(isdigit(*data))
{
cache =cache*10+ (*data - '0');
data ++;
}
switch(op)
{
case '+':
{
stk.push(cache);
break;
}
case '-':
{
stk.push(-cache);
break;
}
case '*':
{
stk.top() *= cache;
break;
}
case '/':
{
stk.top() /= cache;
break;
}
}
cache = 0;
op = *data;
if(*data == ')'|| *data == ']'||*data == '}')
{
++data;
break;
}
++data;
}
int sum = 0;
while(!stk.empty())
{
sum += stk.top();
stk.pop();
}
return sum;//(8-1) 调试结果是7 但是输出是6 为什么??!!
}
int main()
{
string str;
cin>>str;
cout<<result(str.c_str());
return 0;
}