[問題] 如何在中置式轉後置式中間加空格

作者: november1121 (嘎樂 K.O)   2015-04-07 11:15:59
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
我目前已完成了中置運算式轉後置運算式的程式碼 但我想在算式之間穿差空格 該如何
該如何變化?
餵入的資料(Input):
12+12+13
A+B
預期的正確結果(Expected Output):
12 12 + 13 +
A B +
錯誤結果(Wrong Output):
1212+13+
AB+
程式碼(Code):(請善用置底文網頁, 記得排版)
http://ideone.com/YedF6N
補充說明(Supplement):
程式碼有點長 所以貼於網址中
作者: Caesar08 (Caesar)   2015-04-07 12:20:00
(純好奇)你都會轉了,卻不會加空格?
作者: springman (司布林)   2015-04-07 13:19:00
您如果只是要加空格的話,不就在您的 %c 後面加個空格就可以。只是我與前面網友其實有同樣的好奇。另外您的寫法好像只是轉換,無法算出運算式的值。
作者: Feis (永遠睡不著 @@)   2015-04-07 22:30:00
提示: 不是每個都要加. 還有的地方可能要額外加
作者: springman (司布林)   2015-04-08 04:43:00
不然您就在 + - * / 後面那個輸出 %c 前後都加空格就好不過這樣好像也不行,中序可以這樣做,後序就不行了。正常的做法是您在轉換之前需要先將每個運算元切出來這樣您才能夠在運算元之間加空格,您似乎沒有切運算元應該是在讀到運算子時要記錄一下,之後要輸出運算元時就加個空格,運算子後面也加個空格。我好像應該改看看可以 work,我試過了。在'\0'與+-*/後那個 %c 前面加個空格。default 那個就是要記錄是否運算元再決定是否加空格。「是否運算子之後再決定是否加空格」才對。
作者: Feis (永遠睡不著 @@)   2015-04-08 07:59:00
另一個寫法就是 default 那個不加, 在運算子處理就好
作者: springman (司布林)   2015-04-08 08:00:00
可是 postfix 會有出現連續運算元的情形
作者: Feis (永遠睡不著 @@)   2015-04-08 08:47:00
那沒關係
作者: s4300026 (s4300026)   2015-04-08 23:35:00
偵測到運算子立刻加空白,輸出運算子前後加空白。不好意思,修正一下,輸出運算子前加空白即可,後免加。
作者: springman (司布林)   2015-04-13 12:18:00
如果只針對您的case,只要 case ')' 那個輸入改成" %c"62 行的 printf("%c",stack[top]); %c 前加個空格即可

Links booklink

Contact Us: admin [ a t ] ucptt.com