作者SeamusBerloz (轩摩斯)
看板Programming
标题[请益] 中序与後序式中的负号与减号处理问题?
时间Mon Nov 5 16:40:07 2018
想请问大大们
对於『中序表示法』与『後序表示法』中的负号『-』
(假设非得使用减号字元 ascii: 0x2d 表示的话),
进行中序对後序式的转换後,再使用堆叠进行後序式计算求值。
原中序式:
2*(-18/3)
我自己查到的例子五花八门 (输出皆用空白字元分隔每一项):
第 1 种 (负号不移位):
2*(-18/3) ==> 2 -18 3 / * ==> -18 除以 3 先做 ==> 最後结果得 -12
第 2 种 (负号移位):
2*(-18/3) ==> 2 18 - 3 / * ==> * 号会少了一个运算元
(分不出来 - 号到底是 "负号" 还是 "减号")
第 3 种 (预先处理补零):
2*(-18/3) ==> 2*((0-18)/3) ==> 2 0 18 - 3 / *
==> 0 减去 18 先做 ==> 最後结果得 -12
小弟想请教,考虑输入是有可能错误的,需要指出错误与不合法之处,那麽:
1、哪一种後序在学理上才是正确的转法?
2、如果都不是,怎样做才是正确的呢?
--
精密才是美,复杂不是罪!
这是将事物的描述给自己最钜细靡遗的交代!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.163.195.20
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Programming/M.1541407214.A.BA6.html
1F:推 springman: 或许预先处理比较好,我会想将-18当一 163.23.24.146 11/06 11:59
2F:→ springman: 个 token,将-18的值存起来。 163.23.24.146 11/06 11:59
3F:→ descent: 要能分辨 - 是 1-2, 还是 -2 175.98.141.254 11/07 18:21
4F:→ descent: - 有2个意思 175.98.141.254 11/07 18:22