1 00:00:00,000 --> 00:00:00,994 2 00:00:00,994 --> 00:00:11,431 >> [音樂播放] 3 00:00:11,431 --> 00:00:12,500 >> ROB BOWDEN:你好。 4 00:00:12,500 --> 00:00:13,230 我搶。 5 00:00:13,230 --> 00:00:15,080 並讓我們貪婪。 6 00:00:15,080 --> 00:00:18,560 >> 所以,首先我們需要做的 究竟是如何詢問用戶 7 00:00:18,560 --> 00:00:20,500 太大的變化是欠。 8 00:00:20,500 --> 00:00:23,310 所以在這裡,我們看到我們有 一個do / while循環。 9 00:00:23,310 --> 00:00:26,650 我們正在制定計 等於GetFloat。 10 00:00:26,650 --> 00:00:27,890 什麼是GetFloat? 11 00:00:27,890 --> 00:00:30,700 它在功能之一 CS50庫,得到了 12 00:00:30,700 --> 00:00:32,450 浮來自用戶。 13 00:00:32,450 --> 00:00:35,200 記住,為了使用該功能, 我們需要包括散列 14 00:00:35,200 --> 00:00:37,790 CS50.h在頂部。 15 00:00:37,790 --> 00:00:42,310 >> 所以一旦我們有了這個值從 用戶,我們還需要確保 16 00:00:42,310 --> 00:00:43,560 這是一個有效的值。 17 00:00:43,560 --> 00:00:46,050 我們不能欠負錢。 18 00:00:46,050 --> 00:00:48,460 所以這就是目的 這點做的/ while循環。 19 00:00:48,460 --> 00:00:52,420 我們繼續循環,同時美元 小於零。 20 00:00:52,420 --> 00:00:56,960 和一個do / while循環是正確的事情 用在這裡,因為我們需要問的 21 00:00:56,960 --> 00:01:00,290 用戶至少一次對如何 多少錢是欠。 22 00:01:00,290 --> 00:01:05,040 >> 所以一旦我們有一些美元, 我們在這裡看到我們有整型仙 23 00:01:05,040 --> 00:01:08,630 等於一輪美元時代 CENTS_PER_DOLLAR。 24 00:01:08,630 --> 00:01:10,740 在頂部,我們看到, CENTS_PER_DOLLAR是 25 00:01:10,740 --> 00:01:13,750 明智地定義為100。 26 00:01:13,750 --> 00:01:16,270 那麼,什麼是這條線在做什麼? 27 00:01:16,270 --> 00:01:21,200 >> 好吧,如果你還記得,浮點 價值觀是不太準確的。 28 00:01:21,200 --> 00:01:25,470 不同於整數,我們不能代表 浮點值完全相同。 29 00:01:25,470 --> 00:01:28,660 總有某種 的不精確性。 30 00:01:28,660 --> 00:01:32,840 因此,我們更願意與剛剛整數合作 貫​​穿這一問題。 31 00:01:32,840 --> 00:01:42,690 這裡,如果用戶輸入的3.42美元, 我們正在轉換,為342美分, 32 00:01:42,690 --> 00:01:45,900 舍入,剛剛擺脫的 任何不準確的。 33 00:01:45,900 --> 00:01:49,940 >> 所以一旦我們有仙數 一個整數,我們可以繼續 34 00:01:49,940 --> 00:01:51,730 其餘的程序。 35 00:01:51,730 --> 00:01:55,910 我們在這裡看到,我們正在申報整數 硬幣的,我們只使用 36 00:01:55,910 --> 00:01:59,560 以保持總的軌道 硬幣的數目。 37 00:01:59,560 --> 00:02:01,590 在這裡,我們有我們的第一個while循環。 38 00:02:01,590 --> 00:02:06,780 >> 我們看到雖然美分大於或 等於四分之一,這上面,是哈希 39 00:02:06,780 --> 00:02:14,680 定義為25,而這是真的,我們 想要增加我們的硬幣數 40 00:02:14,680 --> 00:02:18,350 和按季度遞減美分。 41 00:02:18,350 --> 00:02:22,810 請記住,此語法 等效於分 42 00:02:22,810 --> 00:02:26,020 等於美分減去四分之一。 43 00:02:26,020 --> 00:02:28,170 那些是相同的。 44 00:02:28,170 --> 00:02:31,850 >> 那麼,什麼是這個while循環在做什麼? 45 00:02:31,850 --> 00:02:39,260 這裡的想法是,如果我知道3.42美元 欠,我可以繼續給 46 00:02:39,260 --> 00:02:42,670 宿舍,直到我不能給 宿舍了。 47 00:02:42,670 --> 00:02:47,720 我不能給任何四分之三以上, 一旦我給3.25美元。 48 00:02:47,720 --> 00:02:53,300 >> 那麼,曾經是那樣的話,我們會 打破這個while循環。 49 00:02:53,300 --> 00:02:57,650 仙將在17美分留。 50 00:02:57,650 --> 00:03:01,910 我們會繼續到下一個 while循環在這裡我們說的,而仙 51 00:03:01,910 --> 00:03:04,270 大於或等於一角。 52 00:03:04,270 --> 00:03:07,420 >> 現在我們正在做完全相同的 事情我們做的季度情況下, 53 00:03:07,420 --> 00:03:09,010 除非角錢。 54 00:03:09,010 --> 00:03:15,050 因此,與0.17美元,我們將循環,直到我們可以 不再給一毛錢,這是 55 00:03:15,050 --> 00:03:16,680 一次。 56 00:03:16,680 --> 00:03:20,470 然後我們會留下7美分。 57 00:03:20,470 --> 00:03:24,730 >> 然後,我們將繼續為鎳,其中 將循環,直到我們不能給 58 00:03:24,730 --> 00:03:29,420 任何更多的鎳,這將 留給我們的兩分錢。 59 00:03:29,420 --> 00:03:34,400 然後,向下在下面,我們也 便士,這將循環和意志 60 00:03:34,400 --> 00:03:37,140 最後留給我​​們的零美分。 61 00:03:37,140 --> 00:03:41,670 那麼,在年底,我們只需要 打印出我們的硬幣數量。 62 00:03:41,670 --> 00:03:44,980 >> 所以,這個方案是完全正確的。 63 00:03:44,980 --> 00:03:47,310 但是,我們其實可以做的更好一點。 64 00:03:47,310 --> 00:03:52,660 現在,如果我說,我欠你一萬元 你不應該需要去這裡有一個 65 00:03:52,660 --> 00:03:55,310 季度,兩個季度,三季度。 66 00:03:55,310 --> 00:03:59,450 你應該馬上知道 我欠你40,000宿舍。 67 00:03:59,450 --> 00:04:04,070 >> 現在,讓我們來看看一個程序, 處理它好一點。 68 00:04:04,070 --> 00:04:07,190 在這個版本中的東西,我們仍然需要 索要的金額用戶 69 00:04:07,190 --> 00:04:10,930 改變,他們希望在完全相同 我們之前也做了同樣的方式。 70 00:04:10,930 --> 00:04:14,110 我們需要四捨五入它的確切 途中我們以前那樣。 71 00:04:14,110 --> 00:04:17,910 我們仍然有我們的硬幣整數 宣布完全和以前一樣。 72 00:04:17,910 --> 00:04:21,399 >> 因此,這裡是那裡的東西 會有點不同。 73 00:04:21,399 --> 00:04:24,640 我們正在做的硬幣加上等號 仙按季度劃分 74 00:04:24,640 --> 00:04:27,140 其中四分之一是25。 75 00:04:27,140 --> 00:04:31,790 這有什麼要說的是,把盡可能多的 宿舍為可以進入美分,並添加 76 00:04:31,790 --> 00:04:33,030 該硬幣。 77 00:04:33,030 --> 00:04:40,100 >> 所以,如果仙是142,142分 25給我們5。 78 00:04:40,100 --> 00:04:43,950 請記住,整數除法 自動截斷。 79 00:04:43,950 --> 00:04:46,870 因此,我們正在做的硬幣加等於5。 80 00:04:46,870 --> 00:04:51,850 >> 緊接著,我們在說 美分等於美分MOD季度。 81 00:04:51,850 --> 00:04:57,150 請記住,MOD經營者給 我們相除後的餘數。 82 00:04:57,150 --> 00:05:05,840 所以142 MOD季度,這將使 是142減去125,它是17。 83 00:05:05,840 --> 00:05:10,470 這之後的餘 做142除以25。 84 00:05:10,470 --> 00:05:13,040 >> 所以,現在美分等於17。 85 00:05:13,040 --> 00:05:16,080 和我們做同樣的確切 對於助攻的事情。 86 00:05:16,080 --> 00:05:18,620 17除以10將給我們1。 87 00:05:18,620 --> 00:05:20,150 我們添加到硬幣。 88 00:05:20,150 --> 00:05:25,380 然後我們更新美分,至 是17模10,它是7。 89 00:05:25,380 --> 00:05:27,200 >> 然後相同的鎳。 90 00:05:27,200 --> 00:05:29,180 7除以5是1。 91 00:05:29,180 --> 00:05:30,880 補充一點,到硬幣。 92 00:05:30,880 --> 00:05:34,600 然後7模5是2。 93 00:05:34,600 --> 00:05:35,910 這就是我們美分。 94 00:05:35,910 --> 00:05:39,065 >> 然後,掙點小錢,沒有真正的 點分割或改裝,因為, 95 00:05:39,065 --> 00:05:42,170 如果我們有0.2美元遺留下來的,我們可以 只是馬上補充說,到 96 00:05:42,170 --> 00:05:43,590 我們的硬幣數量。 97 00:05:43,590 --> 00:05:48,210 最後,我們需要打印出我們的 硬幣的數目和任選 98 00:05:48,210 --> 00:05:52,100 返回0,在我們節目的最後 來表示一切正常。 99 00:05:52,100 --> 00:05:53,120 >> 我的名字是羅布。 100 00:05:53,120 --> 00:05:54,020 這是貪婪的。 101 00:05:54,020 --> 00:05:57,620 >> [音樂播放] 102 00:05:57,620 --> 00:06:01,515