開發平台(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]!='+-*/' ''內應該只能塞一個字元的東西
剛剛去測試過 真的不能orz 已改掉了 不過temp[i+1]依然沒改善
作者: narukaze (Pt) 2015-01-09 21:46:00
問題有好幾個...用除錯器看看 還會有除以0的情況發生檢查 mathstack 存了什麼
作者:
fwfly (大笨蛋... )
2015-01-10 08:46:00narukaze 是對的,mathstack 的邏輯跟你想的不一樣
因為我判斷空白後面是不是運算子的方式失敗了 所以只要碰到空白lead就會+1 即使後面是運算子也是奇怪的是我用pirntf("%d %c %c",i,temp[i],temp[i+1])印出來的temp[i+1]是正常的 丟到判斷式就失控了
作者:
tj386 (最愛歐陽三姊妹♥♥♥)
2015-01-10 14:24:00for最後一次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); }}