看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 第118行那邊判斷的問題 餵入的資料(Input): 240/12/8*25 預期的正確結果(Expected Output): 62.5 錯誤結果(Wrong Output): 240 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/0zaYY1mx 補充說明(Supplement): 用了中斷點去找BUG 發現temp[i+1]居然一直指在第1個陣列的值 i明明都跑到後面去了.. temp[i]也是正常運作 麻煩各位了 --
coldchris:樓下白癡05/16 18:39
fleeaaa:冒險蓋05/16 18:40
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.156.148 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1420807120.A.DF0.html
narukaze: temp[i+1]!='+-*/' ''內應該只能塞一個字元的東西 01/09 20:58
wvwvwvwvwv: 剛剛去測試過 真的不能orz 已改掉了 不過temp[i+1] 01/09 21:06
wvwvwvwvwv: 依然沒改善 01/09 21:06
narukaze: 問題有好幾個...用除錯器看看 還會有除以0的情況發生 01/09 21:46
narukaze: 檢查 mathstack 存了什麼 01/09 21:47
fwfly: narukaze 是對的,mathstack 的邏輯跟你想的不一樣 01/10 08:46
wvwvwvwvwv: 因為我判斷空白後面是不是運算子的方式失敗了 所以 01/10 10:46
wvwvwvwvwv: 只要碰到空白lead就會+1 即使後面是運算子也是 01/10 10:47
wvwvwvwvwv: 奇怪的是我用pirntf("%d %c %c",i,temp[i],temp[i+1]) 01/10 12:37
wvwvwvwvwv: 印出來的temp[i+1]是正常的 丟到判斷式就失控了 01/10 12:37
tj386: for最後一次loop時temp[i+1]不就出界了嗎temp又剛好宣告100 01/10 14:24
tj386: 我把判斷是改成這樣就跑出正確62.5了 if(temp[i] == ' '){ 01/10 14:45
tj386: char *s = strtok(NULL," "); 01/10 14:46
tj386: if( temp[i+1]!='+'&& temp[i+1]!='-'&&temp[i+1]!='*'&&te 01/10 14:46
tj386: mp[i+1]!='/'){ mathstack[++lead]=atof(s); }} 01/10 14:47
wvwvwvwvwv: 居然分開寫就對了...WHY??? 01/10 20:25
※ 編輯: wvwvwvwvwv (220.132.18.34), 01/10/2015 21:39:12