[音樂播放] ROB BOWDEN:你好。 我搶。 並讓我們貪婪。 所以,首先我們需要做的 究竟是如何詢問用戶 太大的變化是欠。 所以在這裡,我們看到我們有 一個do / while循環。 我們正在制定計 等於GetFloat。 什麼是GetFloat? 它在功能之一 CS50庫,得到了 浮來自用戶。 記住,為了使用該功能, 我們需要包括散列 CS50.h在頂部。 所以一旦我們有了這個值從 用戶,我們還需要確保 這是一個有效的值。 我們不能欠負錢。 所以這就是目的 這點做的/ while循環。 我們繼續循環,同時美元 小於零。 和一個do / while循環是正確的事情 用在這裡,因為我們需要問的 用戶至少一次對如何 多少錢是欠。 所以一旦我們有一些美元, 我們在這裡看到我們有整型仙 等於一輪美元時代 CENTS_PER_DOLLAR。 在頂部,我們看到, CENTS_PER_DOLLAR是 明智地定義為100。 那麼,什麼是這條線在做什麼? 好吧,如果你還記得,浮點 價值觀是不太準確的。 不同於整數,我們不能代表 浮點值完全相同。 總有某種 的不精確性。 因此,我們更願意與剛剛整數合作 貫​​穿這一問題。 這裡,如果用戶輸入的3.42美元, 我們正在轉換,為342美分, 舍入,剛剛擺脫的 任何不準確的。 所以一旦我們有仙數 一個整數,我們可以繼續 其餘的程序。 我們在這裡看到,我們正在申報整數 硬幣的,我們只使用 以保持總的軌道 硬幣的數目。 在這裡,我們有我們的第一個while循環。 我們看到雖然美分大於或 等於四分之一,這上面,是哈希 定義為25,而這是真的,我們 想要增加我們的硬幣數 和按季度遞減美分。 請記住,此語法 等效於分 等於美分減去四分之一。 那些是相同的。 那麼,什麼是這個while循環在做什麼? 這裡的想法是,如果我知道3.42美元 欠,我可以繼續給 宿舍,直到我不能給 宿舍了。 我不能給任何四分之三以上, 一旦我給3.25美元。 那麼,曾經是那樣的話,我們會 打破這個while循環。 仙將在17美分留。 我們會繼續到下一個 while循環在這裡我們說的,而仙 大於或等於一角。 現在我們正在做完全相同的 事情我們做的季度情況下, 除非角錢。 因此,與0.17美元,我們將循環,直到我們可以 不再給一毛錢,這是 一次。 然後我們會留下7美分。 然後,我們將繼續為鎳,其中 將循環,直到我們不能給 任何更多的鎳,這將 留給我們的兩分錢。 然後,向下在下面,我們也 便士,這將循環和意志 最後留給我​​們的零美分。 那麼,在年底,我們只需要 打印出我們的硬幣數量。 所以,這個方案是完全正確的。 但是,我們其實可以做的更好一點。 現在,如果我說,我欠你一萬元 你不應該需要去這裡有一個 季度,兩個季度,三季度。 你應該馬上知道 我欠你40,000宿舍。 現在,讓我們來看看一個程序, 處理它好一點。 在這個版本中的東西,我們仍然需要 索要的金額用戶 改變,他們希望在完全相同 我們之前也做了同樣的方式。 我們需要四捨五入它的確切 途中我們以前那樣。 我們仍然有我們的硬幣整數 宣布完全和以前一樣。 因此,這裡是那裡的東西 會有點不同。 我們正在做的硬幣加上等號 仙按季度劃分 其中四分之一是25。 這有什麼要說的是,把盡可能多的 宿舍為可以進入美分,並添加 該硬幣。 所以,如果仙是142,142分 25給我們5。 請記住,整數除法 自動截斷。 因此,我們正在做的硬幣加等於5。 緊接著,我們在說 美分等於美分MOD季度。 請記住,MOD經營者給 我們相除後的餘數。 所以142 MOD季度,這將使 是142減去125,它是17。 這之後的餘 做142除以25。 所以,現在美分等於17。 和我們做同樣的確切 對於助攻的事情。 17除以10將給我們1。 我們添加到硬幣。 然後我們更新美分,至 是17模10,它是7。 然後相同的鎳。 7除以5是1。 補充一點,到硬幣。 然後7模5是2。 這就是我們美分。 然後,掙點小錢,沒有真正的 點分割或改裝,因為, 如果我們有0.2美元遺留下來的,我們可以 只是馬上補充說,到 我們的硬幣數量。 最後,我們需要打印出我們的 硬幣的數目和任選 返回0,在我們節目的最後 來表示一切正常。 我的名字是羅布。 這是貪婪的。 [音樂播放]