[問題] 誰可以幫幫我看為什麼錯~"~

看板C_and_CPP作者 (蠶哥)時間14年前 (2011/06/26 15:35), 編輯推噓1(1026)
留言27則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C語言 問題(Question): 為什麼我encoder陣列的[4]跟[5]應該是01卻出現00 餵入的資料(Input): intput 是 1 1 0 就是我程式碼中的binary_bit 預期的正確結果(Expected Output): [4][5] 應該是01 錯誤結果(Wrong Output): 出現00 程式碼(Code):(請善用置底文網頁, 記得排版) int binary_bit[3]={1,1,0}; int encoder[10]; void main(void) { if(binary_bit[0]==1) { encoder[0]=1; encoder[1]=1; } else { encoder[0]=0; encoder[1]=0; } if(binary_bit[0]==1) { do { encoder[2]=0; encoder[3]=1; } while (binary_bit[1]==1); do { encoder[2]=1; encoder[3]=0; } while (binary_bit[1]==0); } else { do { encoder[2]=1; encoder[3]=1; } while(binary_bit[1]==1); do { encoder[2]=0; encoder[3]=0; } while(binary_bit[1]==0); } if(encoder[2]!=encoder[3]) { if(encoder[2]==0) { do { encoder[4]=1; encoder[5]=0; } while (binary_bit[2]==1); do { encoder[4]=0; encoder[5]=1; } while (binary_bit[2]==0); } else { do { encoder[4]=0; encoder[5]=0; } while (binary_bit[2]==1); do { encoder[4]=1; encoder[5]=1; } while (binary_bit[2]==0); } } else { do { encoder[4]=1; encoder[5]=1; } while(binary_bit[2]==1); do { encoder[4]=0; encoder[5]=0; } while(binary_bit[2]==0); } 補充說明(Supplement): 救命~"~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.180.35.221

06/26 15:39, , 1F
看不懂,放棄 XD
06/26 15:39, 1F

06/26 15:39, , 2F
XD 我程式很爛 所以可能有點難懂吧 T_T
06/26 15:39, 2F

06/26 15:40, , 3F
話說我重新開軟體重新編譯 encoder[4][5]又變成00勒@@
06/26 15:40, 3F

06/26 15:40, , 4F
雖然還是錯 但像一點了= ="我再看看好了:)
06/26 15:40, 4F

06/26 15:41, , 5F
建議說清楚這個程式在做什麼、運作邏輯是怎麼樣的
06/26 15:41, 5F

06/26 15:41, , 6F
什麼input會得到什麼output,為什麼
06/26 15:41, 6F

06/26 15:42, , 7F
有點難說耶 因為這個程式是在算通訊的編碼 我是照理論
06/26 15:42, 7F

06/26 15:43, , 8F
做的 所以運作邏輯我不知道怎麼講 囧a
06/26 15:43, 8F
※ 編輯: xm3vul3h06 來自: 175.180.35.221 (06/26 15:43)

06/26 15:49, , 9F
排版加油一點 話說 我挺好奇你的do while是怎麼跳出來的.
06/26 15:49, 9F

06/26 15:50, , 10F
while裡面跟本沒有對判斷式有所影響 如果進去應該不出來
06/26 15:50, 10F

06/26 15:52, , 11F
甚麼意思啊??我太久沒打C了抱歉...是說while怎樣??
06/26 15:52, 11F

06/26 15:53, , 12F
你先把code貼到置底文裡頭的網頁吧 bbs上這樣好難懂
06/26 15:53, 12F

06/26 15:55, , 13F
我是說 你一旦進去while 應該就卡死在裡面了 不會出來
06/26 15:55, 13F

06/26 15:57, , 14F
無窮回圈+1
06/26 15:57, 14F

06/26 15:57, , 15F
http://codepad.org/E23ivfP8 是這樣貼嘛@@"?
06/26 15:57, 15F

06/26 16:00, , 16F
哦哦@@"我在do的{}最後一行都加了break; 這樣對了嘛@@?
06/26 16:00, 16F

06/26 16:02, , 17F
加了break是會跳出 但是為何要用do-while...
06/26 16:02, 17F

06/26 16:03, , 18F
加上break @@ 那每個do都只跑一次 那為啥要寫while?
06/26 16:03, 18F

06/26 16:04, , 19F
我想說 while....用來當判斷式 囧 對不起啦 真的很久沒
06/26 16:04, 19F

06/26 16:04, , 20F
碰了~"~
06/26 16:04, 20F

06/26 16:06, , 21F
我剛剛把do刪掉然後把我while的判斷式放到每個{}上面
06/26 16:06, 21F

06/26 16:06, , 22F
去跑 好像還是無窮迴圈= =a?
06/26 16:06, 22F

06/26 16:06, , 23F
那if就好了 沒有要重複一直跑的話
06/26 16:06, 23F

06/26 16:06, , 24F
你該用的應該是 if 吧?
06/26 16:06, 24F

06/26 16:06, , 25F
所以你是要if(binary_bit[1]==1) {encoder[2]=0;...}這樣?
06/26 16:06, 25F

06/26 16:11, , 26F
噁....也對吼= = 好 我試試看 抱歉 生疏造成大家麻煩
06/26 16:11, 26F

06/26 16:19, , 27F
OK 會動了 謝謝各位 我太自作聰明 嗚嗚
06/26 16:19, 27F
文章代碼(AID): #1E1k5AeD (C_and_CPP)