永发信息网

后缀表达式求值 C++ 程序有问题,执行a.out '2 1 -'结果是 -1,需要怎么修改?

答案:2  悬赏:40  手机版
解决时间 2021-02-12 07:27
  • 提问者网友:回忆在搜索
  • 2021-02-11 16:16
#include
#include
#include "STACK.cxx"
using namespace std;

int main(int argc, char *argv[])
{
char *a=argv[1];
int N = strlen(a);
STACK save(N);
for (int i=0; i {
if (a[i]== '+')
save.push(save.pop()+save.pop());
if (a[i]== '*')
save.push(save.pop()*save.pop());
if (a[i]== '-')
{
save.push(save.pop()-save.pop()); //就算这里掉换顺序也一样
}
if (a[i]=='/')
save.push(save.pop()/save.pop());
if((a[i]>='0')&&(a[i]<='9'))
save.push(0);
while ((a[i]>='0')&&(a[i]<='9'))
save.push(10*save.pop()+(a[i++]-'0'));
}
cout << save.pop() << endl;
}
~
~
~

save.push(save.pop()-save.pop()); 为什么不能这样用?
最佳答案
  • 五星知识达人网友:野慌
  • 2021-02-11 16:39
你不能这样用啊save.push(save.pop()-save.pop()); //就算这里掉换顺序也一样

可以这样啊:
int a = save.pop();
int b = save.pop();

if (a[i]== '-')
{
save.push(b-a); //ok吧
}
全部回答
  • 1楼网友:末日狂欢
  • 2021-02-11 16:59
你好! 恩,1楼的 用了简化蛮好 的,LZ可以试下1楼的 仅代表个人观点,不喜勿喷,谢谢。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯