[问题] 计算机 后序运算问题

楼主: wvwvwvwvwv (杀死丁力这个杂碎a~)   2015-01-09 20:38:36
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
问题(Question):
第118行那边判断的问题
喂入的资料(Input):
240/12/8*25
预期的正确结果(Expected Output):
62.5
错误结果(Wrong Output):
240
程式码(Code):(请善用置底文网页, 记得排版)
http://codepad.org/0zaYY1mx
补充说明(Supplement):
用了中断点去找BUG
发现temp[i+1]居然一直指在第1个阵列的值
i明明都跑到后面去了..
temp[i]也是正常运作
麻烦各位了
作者: narukaze (Pt)   2015-01-09 20:58:00
temp[i+1]!='+-*/' ''内应该只能塞一个字符的东西
楼主: wvwvwvwvwv (杀死丁力这个杂碎a~)   2015-01-09 21:06:00
刚刚去测试过 真的不能orz 已改掉了 不过temp[i+1]依然没改善
作者: narukaze (Pt)   2015-01-09 21:46:00
问题有好几个...用除错器看看 还会有除以0的情况发生检查 mathstack 存了什么
作者: fwfly (大笨蛋... )   2015-01-10 08:46:00
narukaze 是对的,mathstack 的逻辑跟你想的不一样
楼主: wvwvwvwvwv (杀死丁力这个杂碎a~)   2015-01-10 10:46:00
因为我判断空白后面是不是运算子的方式失败了 所以只要碰到空白lead就会+1 即使后面是运算子也是奇怪的是我用pirntf("%d %c %c",i,temp[i],temp[i+1])印出来的temp[i+1]是正常的 丢到判断式就失控了
作者: tj386 (最爱欧阳三姊妹♥♥♥)   2015-01-10 14:24:00
for最后一次loop时temp[i+1]不就出界了吗temp又刚好宣告100我把判断是改成这样就跑出正确62.5了 if(temp[i] == ' '){char *s = strtok(NULL," ");if( temp[i+1]!='+'&& temp[i+1]!='-'&&temp[i+1]!='*'&&temp[i+1]!='/'){ mathstack[++lead]=atof(s); }}
楼主: wvwvwvwvwv (杀死丁力这个杂碎a~)   2015-01-10 20:25:00
居然分开写就对了...WHY???

Links booklink

Contact Us: admin [ a t ] ucptt.com