[請益] 中序與後序式中的負號與減號處理問題?

看板Programming作者 (軒摩斯)時間6年前 (2018/11/05 16:40), 編輯推噓1(103)
留言4則, 2人參與, 6年前最新討論串1/2 (看更多)
想請問大大們 對於『中序表示法』與『後序表示法』中的負號『-』 (假設非得使用減號字元 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://www.ptt.cc/bbs/Programming/M.1541407214.A.BA6.html

11/06 11:59, 6年前 , 1F
或許預先處理比較好,我會想將-18當一
11/06 11:59, 1F

11/06 11:59, 6年前 , 2F
個 token,將-18的值存起來。
11/06 11:59, 2F

11/07 18:21, 6年前 , 3F
要能分辨 - 是 1-2, 還是 -2
11/07 18:21, 3F

11/07 18:22, 6年前 , 4F
- 有2個意思
11/07 18:22, 4F
文章代碼(AID): #1Ru07kkc (Programming)
文章代碼(AID): #1Ru07kkc (Programming)