NTUE-CS102 板


LINE

快睡著了....找點熟悉的事情做看會不會精神好一點 是說畢竟是作業,不適合直接貼code,看看我的解釋水平現在是到哪好了 這次作業目標是 input 時、分、秒 output 無限次往下輸出時、分、秒,然後隔一定時間清掉一次螢幕 先去思考,這個程式會長怎樣?會用到些什麼? 最少,我們會有時、分、秒的變數、然後有個輸出跟清除畫面的動作 然後,要能夠讓時、分、秒變動 這次作業主要問題就在於如何讓它變動,跟正確的進位 變動很簡單,就是讓它不斷的 "+1" ,所以原則上就使用迴圈去不斷執行這種相似的動作 又因為這三個的進位相近是一種連鎖動作,自然就能應用巢狀迴圈 : 是說邊寫才想到好像可以只用一個迴圈處理._.a 這裡可以先簡化題目,因為時分秒大體上都是相同的行為, 所以先把題目拆解到最基礎的部分開始…將題目先變成只要影響秒,從0~59進行循環 以下有題目解題內容,想努力自己完成看到這就好 ---- 這種情況下就很乾脆…先舉王老大建議的while,預設有個代表秒的sec 照著前面的直覺去寫,就會像下面這樣簡單的一小段可以輸出會一直改變的sec sec = 0; while (sec <= 60){ cout << sec++ <<endl; sec = sec++; } 好,編譯、執行後會發現它"不會"一直循環下去 因為判斷sec > 60以後就會脫離迴圈,而60秒以後應該是回到0才對 因此,在60時要將它歸零 : 某種角度來說,也可以稱為"重新開始" sec = 0; while (sec <= 60){ cout << sec <<endl; sec = sec++; if (sec == 60) sec = 0; } 像這樣,就能達到讓秒不斷輸出的行為 再來,我們要讓它刷新的速度接近於真正的秒,所以要讓它變慢 還有清除頁面的行為 而變慢的方法很簡單,也就像是一般跑遊戲會lag的原因一樣 讓它做事,做的事情越多,速度自然越慢 通常用個迴圈去做些不會顯示在螢幕上的行為,或是讓螢幕看起來沒在動就好 先舉個昨天見到的例子 sec = 0; while (sec <= 60){ for (int i=0;i<=1500;i++){ cout << sec <<endl; system("cls"); } sec = sec++; if (sec == 60) sec = 0; } 這樣就是一個"讓螢幕看起來沒在動"的做法,其實它不斷的輸出、清除畫面 然而,這樣的做法執行時都有一個問題"我的秒怎麼都不會動了?" 嗯…請稍待一會就會動了,事實上,不管是cout or system其實都很慢 另外這個cls本身其實也蠻慢的,所以重複個幾千次就會過很久很久 讓人有不會動的錯覺 而另外一種做法,則是 sec = 0; while (sec <= 60){ cout << sec <<endl; for (int i=0;i<=1500;i++) ; system("cls"); sec = sec++; if (sec == 60) sec = 0; } 像是這樣的空迴圈,同樣可以拖慢時間 不過這次這樣幾千就顯得好像沒在停,往上設幾萬也一樣 那是因為i++這樣+1的行為非常簡單,只做個幾萬次不痛不癢的 所以啦,幾萬次不夠,就做幾千萬次,還不夠就做個幾億次吧 懶散就複製貼上,不然利用巢狀迴圈做次方次提升次數也不錯 在裡面隨便找個數加點取餘數的%計算更好,我在這裡是比較沒花腦袋複製貼上就是了 到這裡,你的"秒"就完成了;其次,我們將問題變大到分 在外面多包一個迴圈與變數min,用類似秒的方式去寫 sec = 0; min = 0; while (min <= 60){ while (sec <= 60){ cout <<min <<" " << sec <<endl; for (int i=0;i<=1500;i++) ; system("cls"); sec = sec++; if (sec == 60) sec = 0; } min = min++; if (min == 60) min = 0 } 沒什麼差,分還是不會動 所以要做些改變,比如說,把秒到歸零後跳出來讓min增加後重新開始下個迴圈 這裡要使用昨天講switch時提到的break; 這個break,能夠中斷並跳出一個特定的區域,比如說迴圈或switch 拿code說明比較快 sec = 0; min = 0; while (min <= 60){ while (sec <= 60){ cout <<min <<" " << sec <<endl; for (int i=0;i<=1500;i++) ; system("cls"); sec = sec++; if (sec == 60){ sec = 0; break; } } min = min++; if (min == 60) min = 0 } 這樣子的code,就能讓秒在60時,歸零 然後跳出我們在設定"秒"的這個子迴圈、往程式下面這行min = min++;執行 要注意的是,如果那個if內容改成 if (sec == 60){ break;   sec = 0; } 這樣的話,就會先"跳出",後面的歸零就不會處理了 嗯…時的地方就不寫了,不然作業都抄完了、期末考也完了 同樣的做法繼續寫就是了 文末空白防雷 for版本的話....等作業繳交後直接貼code或晚上再說好了 拿人家電腦會發懶(滾動) 而且好像快要考微積分了wryyyyyyyyyyy -- 本命 ○楽園の巫女  博麗 霊夢 職業:博麗神社の巫女さん  Hakurei Reimu   能力:主に空を飛ぶ程度の能力 @東方project系列 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.127.36.173 ※ 編輯: game0416 來自: 120.127.36.173 (11/26 11:35)
1F:→ game0416:是說沒特別編,大概會少分號什麼的小東西(跑遠 11/26 11:38
※ 編輯: game0416 來自: 120.127.36.173 (11/26 11:39)
2F:推 linjrming:用Sleep() 11/26 12:03
3F:推 dosomethnig:好球 11/26 12:25
4F:→ Arashinoon:話說我用for做 而且沒有輸入秒這個動作 我GG了? 11/26 16:44
5F:推 gcobc12632:老師沒有說要輸入秒0.0 不過你爽輸入也可以 吧 11/26 17:33
6F:推 didi12252001:鳳狼大神阿..... 11/26 20:24
7F:推 Arashinoon:是說都沒人來看這篇的樣子 11/29 19:01







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP