看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《loveme00835 (最愛朴素妍)》之銘言: : 用 while 搭配 goto 可以達成 if 的效果 : while( /*condition*/ ) : { : // actions : goto LABEL; : } : 不過這招很噁心, 我只用來實現 break 的功能. : 另外要藉助的還是「Table Driven Approach」這方法, : 1.把不同的 case 分成函式來做判斷, 他們都擁有相同的 sig- : nature : 2.函式指標儲存在陣列裡, 這樣就可以用迴圈來取代落落長的 : if-else敘述 : 使用此法的好處是判斷的邏輯依然保留在程式碼內, 規則做更改也不 : 必另外想新的公式. : 程式碼: http://codepad.org/Gjd0opqG : 嫌巢狀迴圈太深也可以抽出來再寫一個函式, 這是用執行時間換取可 : 讀性、擴充性的方法, 不過太簡單的例子反而有割雞用牛刀的感覺. 小弟我還想說大家都沒看到題目有說要nested loop....XD 這是用while加上個flag直接模擬寫了連續if/else if/else的噁心情況Orz // 假設grade[]存成績, level[]存等第, 都經過適當init過.... for(int i=0; i<10; ++i) { int flag = 1; while(flag && grade[i] >= 90) { level[0]++; flag = 0; } while(flag && grade[i] >= 80) { level[1]++; flag = 0; } while(flag && grade[i] >= 70) { level[2]++; flag = 0; } while(flag && grade[i] >= 60) { level[3]++; flag = 0; } while(flag) { level[4]++; flag = 0; } } == 對不起, 小弟心血來潮胡搞一下, 請大大們鞭輕一點....Q_Q~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.18.177
VictorTom:對不起我忘了每個人有4個成績Orz 02/11 01:02
iamlouis:我以為 nested loop 就是要算 4 個成績跟 10 個同學. :-) 02/11 01:10
VictorTom:小弟我後來才注意到這點, 英文太爛....(縮orz) 02/11 01:17
※ 編輯: VictorTom 來自: 220.134.18.177 (02/11 09:04)