[MUSIC Playing] ROB BOWDEN: Szia. Én Rob. És lássunk mohó. Tehát az első dolog, amit tennie kell nem kéri a felhasználót, hogy pontosan hogyan sok változás fennáll. Tehát itt azt látjuk, hogy van a do / while ciklus. És mi beállítási dollár egyenlő getFloat. Mi getFloat? Ez az egyik feladata a CS50 könyvtár kap egy lebegnek a felhasználó elől. Ne feledje, hogy használja ezt a funkciót, meg kell hash tartalmazza CS50.h a tetején. Tehát, ha van, hogy értéket a felhasználó, azt is meg kell bizonyosodni arról, hogy ez egy érvényes értéket. Nem tartozunk a negatív pénzt. És ez a cél Ennek do / while ciklus. Továbbra is a ciklusok közben dollár kisebb, mint nulla. És a do / while ciklus a helyes használata itt, mert fel kell tennünk a a felhasználó legalább egyszer, hogy milyen sok pénzt tartozott. Tehát, ha van ennyi dollárt, látjuk itt van int cent egyenlő kerek dollár alkalommal CENTS_PER_DOLLAR. A legfelső, azt látjuk, hogy CENTS_PER_DOLLAR van ésszerűen meghatározott 100. Tehát mi ezt a vonalat csinálsz? Nos, ha eszébe jut, lebegőpontos értékek nem egészen pontos. Ellentétben egész, nem tudjuk képviselni lebegőpontos értékek pontosan. Mindig van valami A pontatlanság. Így inkább dolgozni, csak egész számok egészében ezt a problémát. És itt, ha a felhasználó által megadott $ 3,42, mi konvertáló, hogy a 342 cent, és kerekítés, csak megszabadulni sem, hogy pontatlanság. Tehát, ha már annyi cent egy egész szám, akkor továbbra is a a program többi részét. Látjuk, hogy itt vagyunk kijelentve egész pénzérmék mi csak használni nyomon követni az összes számú érmét. Itt van az első while ciklus. Látjuk míg cent vagy nagyobb, mint megegyezik a negyedévben, ami a fenti, a hash meghatározni, mint 25, míg ez igaz, akkor eggyel szeretnéd megnövelni az érmék számát és csökkentő cent negyedévben. Ne feledje, hogy ez a szintaktikai egyenértékű cent egyenlő cent mínusz negyedévben. Ezek ugyanazok. Szóval mi ez a while ciklus csinálsz? Az ötlet az, hogy, ha én tudom, 3,42 $ áll fenn, én is így negyedév, amíg nem tudok adni negyedévben tovább. Nem tudok negyedévben tovább, Egyszer adtam 3,25 $. Tehát, ha egyszer ez a helyzet, fogunk kitörni while ciklussal. Cent marad 17 cent. És akkor is le a következő while ciklus, amikor azt mondjuk, míg a cent nagyobb, vagy egyenlő, mint érmét. És most csinálunk pontosan ugyanolyan dolog, amit nem a negyedévben esetben, kivéve Dimes. Tehát 0,17 $, fogunk hurok, amíg csak lehet már nem ad egy fillért, ami pontosan egyszer. És akkor mi marad 7 cent. Akkor tovább a Nickels, ami majd hurok, amíg nem tudunk adni többé Nickels, ami hagy minket két cent. És akkor, le az alján, van fillérekért, ami loop és akarat Végül hagy minket nulla cent. Aztán a végén, már csak be kell nyomtassa ki a több érmét. Tehát ez a program tökéletesen megfelelő. De mi is valójában egy kicsit jobb. Most, ha azt mondom, hogy én tartozom $ 10,000, akkor nem kell menni, itt van egy negyedévben, két negyedévben, három negyedévben. Tudnia kell, azonnal, hogy Tartozom neked 40.000 negyedévben. Most nézzük meg a program, hogy kezeli, hogy egy kicsit jobb. Ebben a verzióban a dolgok, mi kell még kérni a felhasználót az összeg változás, hogy akarnak pontosan Ugyanígy volt korábban. Meg kell, hogy kerek pontosan ahogy tettük korábban. És még mindig megvan a pénzérmék egész bejelentett pontosan ugyanaz, mint korábban. Tehát itt van, ahol a dolgok egy kicsit más. Csinálunk érmék, valamint egyenlő cent osztva negyedévben ahol negyed 25. Mi ezt mondani, hogy annyi negyedévekben bemegy cent, és adjunk hozzá hogy az érméket. Tehát, ha cent 142, 142 megosztott 25 ad nekünk 5. Ne feledje, hogy egész osztás automatikusan levágja. Ezért csinálunk érmék, valamint egyenlő 5. Közvetlenül ezután, azt mondjuk cent egyenlő cent mod negyedévben. Ne feledje, hogy a mod operátor ad nekünk a fennmaradó felosztás után. Tehát 142 mod negyedévben, hogy megadja mínusz 142 125, ami 17. Ez a fennmaradó után Ennek 142 osztva 25. Tehát most cent egyenlő 17. És mi pontosan ugyanolyan dolog Dimes. 17 osztva 10 ad nekünk 1. És hozzáteszem, hogy érméket. És akkor frissíteni cent 17 10 mod lennie, amely 7. És akkor ugyanaz Nickels. 7 osztva 5 1 lehet. Add, hogy az érméket. És akkor 7 mod 5. 2 lehet. És ez a mi cent. És akkor, fillérekért, nincs igazi pontja az osztódó vagy modding, mivel ha van 0,2 $ marad, tudjuk csak rögtön hozzá, hogy a mi több érmét. És végül, meg kell, hogy nyomtassa ki a számú érmék és, opcionálisan, return 0 végén a programunk annak jeléül minden működött. A nevem Rob. És ez volt mohó. [MUSIC Playing]