看板 C_and_CPP 關於我們 聯絡資訊
從文字檔裡面讀取一個中序算式 (假設此算式一定對,無需檢查) 用scan的方式將其數字以及運算元還有括號分開依原本的順序放入陣列 (雖然名稱是堆疊) 之後在依照網路上的方法用Stack 依照其priority pop() 或 push() 可是問題是執行的時候 總是會少最後一個運算元 如果每處理一個數字或括號或運算元然後印出PostFix 跟 Stack 裡的內容時 又會出現很奇怪的現象:起初兩個物件近來的時候,堆疊 top 會加一, 可是印出其PostFix 和 Stack的內容卻是空格 等到處理第三個物件的時候又會突然從其中之一跳出 不知道為什麼 最後 如果算式是以括號作結尾 譬如 2+3*4+(3+2*3) 或是 2+3*4+(3+2) 就會正確印出後序 可是如果是沒有括號 那麼最後一個運算元( +,-,*,/) 會不見 debug 好久 希望有空的鄉民能幫小弟看看 感謝 <(_._)> 這是程式碼 http://nopaste.csie.org/f3c7b -- 肝不好 肝若好 人生是黑白的 考卷是空白的 、 ﹐ ● ●b ▎ ●> ● ▌ ﹍﹍ 囧> 幹... ▲ ■┘ ▎ ■ ▋ ︶■ 〈﹀ ∥ ▁▁∥ ▎ ﹀〉▊ 〈\ ψcockroach727 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.58.39
cooper6334:最後一個是運算符號就直接error了阿 12/07 22:14
liu2007:我說的是後序的最後一個運算元@.@ 3+2 --> 3 2 + 12/07 22:33
liu2007:結果會變成 3 2 沒有+ 12/07 22:34
ledia:!IsNumber -> !(nextChar >= 48)&&(nextChar <= 57) 12/07 23:18