看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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): 程式碼有點長 所以貼於網址中 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.168.205.153 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1428376563.A.160.html
Caesar08: (純好奇)你都會轉了,卻不會加空格? 04/07 12:20
哈哈 因為我整個程式都打完之後 發現我缺了空格 但是空格怎麼改 輸出都怪怪的
springman: 您如果只是要加空格的話,不就在您的 %c 後面加個空格 04/07 13:19
springman: 就可以。只是我與前面網友其實有同樣的好奇。 04/07 13:19
springman: 另外您的寫法好像只是轉換,無法算出運算式的值。 04/07 13:20
我試過在%c後面加空格了 但他輸出會變成 1 2 1 2 + 1 3 + 會變成每個數字間都有空格 哈哈 我主要只有轉換啦 沒有要算出值 ※ 編輯: november1121 (118.168.205.153), 04/07/2015 22:28:56 ※ 編輯: november1121 (118.168.205.153), 04/07/2015 22:30:47
Feis: 提示: 不是每個都要加. 還有的地方可能要額外加 04/07 22:30
是額外在加迴圈 加空格嗎... 有點沒頭緒ㄟ 再思考看看好了 謝囉:) ※ 編輯: november1121 (118.168.205.153), 04/07/2015 22:34:34 ※ 編輯: november1121 (118.168.205.153), 04/07/2015 22:47:40
springman: 不然您就在 + - * / 後面那個輸出 %c 前後都加空格就好 04/08 04:43
springman: 不過這樣好像也不行,中序可以這樣做,後序就不行了。 04/08 04:44
springman: 正常的做法是您在轉換之前需要先將每個運算元切出來 04/08 04:44
springman: 這樣您才能夠在運算元之間加空格,您似乎沒有切運算元 04/08 04:45
springman: 應該是在讀到運算子時要記錄一下,之後要輸出運算元時 04/08 04:50
springman: 就加個空格,運算子後面也加個空格。我好像應該改看看 04/08 04:51
springman: 可以 work,我試過了。在'\0'與+-*/後那個 %c 前面 04/08 05:02
springman: 加個空格。default 那個就是要記錄是否運算元再決定 04/08 05:02
springman: 是否加空格。 04/08 05:03
springman: 「是否運算子之後再決定是否加空格」才對。 04/08 05:03
Feis: 另一個寫法就是 default 那個不加, 在運算子處理就好 04/08 07:59
springman: 可是 postfix 會有出現連續運算元的情形 04/08 08:00
Feis: 那沒關係 04/08 08:47
s4300026: 偵測到運算子立刻加空白,輸出運算子前後加空白。 04/08 23:35
s4300026: 不好意思,修正一下,輸出運算子前加空白即可,後免加。 04/08 23:39
謝謝各位囉~~~ 最後我做出來是這樣子 http://ideone.com/6twgyk 只是 最後 我試了一個數據 怪怪的 (300+23)*(43-21)/(84+7) 最後出來是300 23+ 43 21- * 84 7+ / 只剩+號跟-號前面沒有空白... 其他都正常.. ※ 編輯: november1121 (118.168.201.113), 04/13/2015 00:47:38
springman: 如果只針對您的case,只要 case ')' 那個輸入改成" %c" 04/13 12:18
springman: 62 行的 printf("%c",stack[top]); %c 前加個空格即可 04/13 12:29