[問題] 計算機 後序運算問題

作者: wvwvwvwvwv (殺死丁力這個雜碎a~)   2015-01-09 20:38:36
開發平台(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]也是正常運作
麻煩各位了
作者: narukaze (Pt)   2015-01-09 20:58:00
temp[i+1]!='+-*/' ''內應該只能塞一個字元的東西
作者: wvwvwvwvwv (殺死丁力這個雜碎a~)   2015-01-09 21:06:00
剛剛去測試過 真的不能orz 已改掉了 不過temp[i+1]依然沒改善
作者: narukaze (Pt)   2015-01-09 21:46:00
問題有好幾個...用除錯器看看 還會有除以0的情況發生檢查 mathstack 存了什麼
作者: fwfly (大笨蛋... )   2015-01-10 08:46:00
narukaze 是對的,mathstack 的邏輯跟你想的不一樣
作者: wvwvwvwvwv (殺死丁力這個雜碎a~)   2015-01-10 10:46:00
因為我判斷空白後面是不是運算子的方式失敗了 所以只要碰到空白lead就會+1 即使後面是運算子也是奇怪的是我用pirntf("%d %c %c",i,temp[i],temp[i+1])印出來的temp[i+1]是正常的 丟到判斷式就失控了
作者: tj386 (最愛歐陽三姊妹♥♥♥)   2015-01-10 14:24:00
for最後一次loop時temp[i+1]不就出界了嗎temp又剛好宣告100我把判斷是改成這樣就跑出正確62.5了 if(temp[i] == ' '){char *s = strtok(NULL," ");if( temp[i+1]!='+'&& temp[i+1]!='-'&&temp[i+1]!='*'&&temp[i+1]!='/'){ mathstack[++lead]=atof(s); }}
作者: wvwvwvwvwv (殺死丁力這個雜碎a~)   2015-01-10 20:25:00
居然分開寫就對了...WHY???

Links booklink

Contact Us: admin [ a t ] ucptt.com