作者VictorTom (鬼翼&娃娃魚)
看板C_and_CPP
標題Re: [問題] 條件式判斷
時間Fri Feb 11 00:57:49 2011
※ 引述《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)