[問題] 後序運算問題

看板C_and_CPP作者 (殺死丁力這個雜碎a~)時間11年前 (2015/01/09 20:38), 11年前編輯推噓0(0016)
留言16則, 4人參與, 最新討論串1/1
開發平台(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]也是正常運作 麻煩各位了 --

05/16 18:39,
樓下白癡
05/16 18:39

05/16 18:40,
冒險蓋
05/16 18:40
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.156.148 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1420807120.A.DF0.html

01/09 20:58, , 1F
temp[i+1]!='+-*/' ''內應該只能塞一個字元的東西
01/09 20:58, 1F

01/09 21:06, , 2F
剛剛去測試過 真的不能orz 已改掉了 不過temp[i+1]
01/09 21:06, 2F

01/09 21:06, , 3F
依然沒改善
01/09 21:06, 3F

01/09 21:46, , 4F
問題有好幾個...用除錯器看看 還會有除以0的情況發生
01/09 21:46, 4F

01/09 21:47, , 5F
檢查 mathstack 存了什麼
01/09 21:47, 5F

01/10 08:46, , 6F
narukaze 是對的,mathstack 的邏輯跟你想的不一樣
01/10 08:46, 6F

01/10 10:46, , 7F
因為我判斷空白後面是不是運算子的方式失敗了 所以
01/10 10:46, 7F

01/10 10:47, , 8F
只要碰到空白lead就會+1 即使後面是運算子也是
01/10 10:47, 8F

01/10 12:37, , 9F
奇怪的是我用pirntf("%d %c %c",i,temp[i],temp[i+1])
01/10 12:37, 9F

01/10 12:37, , 10F
印出來的temp[i+1]是正常的 丟到判斷式就失控了
01/10 12:37, 10F

01/10 14:24, , 11F
for最後一次loop時temp[i+1]不就出界了嗎temp又剛好宣告100
01/10 14:24, 11F

01/10 14:45, , 12F
我把判斷是改成這樣就跑出正確62.5了 if(temp[i] == ' '){
01/10 14:45, 12F

01/10 14:46, , 13F
char *s = strtok(NULL," ");
01/10 14:46, 13F

01/10 14:46, , 14F
if( temp[i+1]!='+'&& temp[i+1]!='-'&&temp[i+1]!='*'&&te
01/10 14:46, 14F

01/10 14:47, , 15F
mp[i+1]!='/'){ mathstack[++lead]=atof(s); }}
01/10 14:47, 15F

01/10 20:25, , 16F
居然分開寫就對了...WHY???
01/10 20:25, 16F
※ 編輯: wvwvwvwvwv (220.132.18.34), 01/10/2015 21:39:12
文章代碼(AID): #1KhylGtm (C_and_CPP)