>> [MUSIC PLAYBACK]
>> ROB BOWDEN: Ahoj.
Som Rob.
A poďme Greedy.
>> Takže prvá vec, ktorú musíme urobiť, sa opýtať, ako užívateľa
veľa zmena dlhuje.
Takže tu vidíme, máme do / while.
A my sme nastavenie dolárov rovná GetFloat.
Čo je GetFloat?
Je to jedna z funkcií CS50 knižnica, ktorá dostane
float od užívateľa.
Pamätajte si, že s cieľom využiť túto funkciu, musíme hash obsahovať
CS50.h hore.
>> Takže akonáhle budeme mať túto hodnotu od užívateľ, musíme tiež byť istí, že
je platná hodnota.
Nemôžeme dlhuje negatívny peňazí.
A tak to je účel tejto úlohy / while.
Pokračujeme opakovanie pri dolárov je menšia ako nula.
A do / while je správna vec používať tu, pretože musíme pýtať
užívateľ aspoň raz, ako koľko peňazí dlhuje.
>> Takže akonáhle sme sa, že počet dolárov, vidíme tu máme int centov
rovná kolo dolárov krát CENTS_PER_DOLLAR.
V hornej časti vidíme, že CENTS_PER_DOLLAR je
rozumne definovaná ako 100.
Takže to, čo sa tento riadok robí?
>> No, ak si pamätám, s plávajúcou desatinnou čiarkou hodnoty nie sú úplne presné.
Na rozdiel od čísel, nemôžeme predstavovať s plávajúcou desatinnou čiarkou hodnoty presne.
Vždy je tu nejaký nepresnosť.
Tak sme radšej pracovať len s celými číslami v tomto probléme.
A tu, v prípade, že používateľ zadal 3,42 dolárov, sme konverzie, ktoré sa na 342 centov a
zaokrúhľovania, len zbaviť každý z tejto nepresnosti.
>> Takže akonáhle budeme mať počet centov na celé číslo, môžeme pokračovať
Zvyšok programu.
Vidíme tu, že budeme deklarovať číslo mince, ktoré sme sa používať iba
sledovať z celkového počtu počet mincí.
Tu máme prvé while.
>> Vidíme, zatiaľ čo centov je väčší alebo rovná štvrťroku, ktoré vyššie, je hash
definovaná ako 25, a zároveň, že je to pravda, sme Chcete zvýšiť svoju počtu mincí
a Dekrementační centov podľa štvrťrokov.
Nezabudnite, že táto syntaxe zodpovedá centov
rovná centov mínus štvrťroku.
To sú rovnaké.
>> Takže čo je to, keď slučka robí?
Myšlienka je, že pokiaľ viem, 3,42 dolárov dlhuje, môžem aj naďalej dávať
štvrtiny, kým som si nedal štvrtiny viac.
Nemôžem dať QUARTERS nič viac, Raz som s ohľadom 3,25 dolárov.
>> Takže, akonáhle je to tento prípad, budeme vymaniť sa z tohto cyklu while.
Centov bude ponechané na 17 centov.
A budeme pokračovať až do nasledujúcej while, kde hovoríme, zatiaľ čo centov
je väčší alebo rovné desetník.
>> A teraz robíme to isté presné vec, ktorú sme urobili v tomto štvrťroku prípade,
s výnimkou desaťhalierniky.
Takže s 0,17 dolármi, budeme slučka, kým môžeme už dať desetník, ktorý je
práve raz.
A potom budeme zostáva 7 centov.
>> Potom budeme pokračovať na Nickels, ktoré sa slučka, kým nemôže dať
žiadne ďalšie Nickels, ktorý bude nechajte nás s dva centy.
A potom, sa v spodnej časti, máme haliere, ktorý bude slučka a bude
Nakoniec nechajte nás s nulovými centov.
Potom na konci, len je treba, aby vytlačte si náš počet mincí.
>> Takže tento program je úplne správne.
Ale môžeme skutočne urobiť trochu lepšie.
Teraz, keď poviem, že dlhujem ti $ 10,000, by ste nemali potrebovať ísť tu je jeden
štvrťroku, dvoch štvrťrokoch, tri štvrtiny.
Mali by ste okamžite vedieť, že Dlhujem ti 40.000 štvrtiny.
>> Teraz sa poďme pozrieť na program, ktorý zvláda to trochu lepšie.
V tejto verzii vecí, stále potrebujeme požiadať užívateľa o množstve
zmeniť, že chcú v presne Rovnakým spôsobom sme robili predtým.
Musíme to zohnať presne ako sme robili predtým.
A máme ešte naše mince číslo vyhlásil, presne rovnaký ako predtým.
>> Tak tu je miesto, kde sa veci dostať trochu inak.
Robíme mince a navyše rovná centov rozdelené podľa štvrťrokov
kde štvrtina je 25.
Čo to hovorí je, brať čo najviac štvrtiny ako môže ísť do centov a pridať
že na minciach.
>> Takže ak je 142 centov, 142 delená o 25 nám dáva 5.
Nezabudnite, že celočíselné delenie automaticky skráti.
Takže robíme mincí a je rovná 5.
>> Ihneď potom, čo hovoríme centov rovných centov mod štvrťroku.
Nezabudnite, že mod operátor dáva nám zvyšok po delení.
Takže 142 mod štvrťroku, ktoré vám dá je 142 mínus 125, čo je 17.
Je to zvyšok po robí 142 delené 25.
>> Takže teraz centov sa rovná 17.
A robíme to isté presné vec pre desaťhalierniky.
17 delené 10 nám dá 1.
A keď k tomu pridám mincí.
A potom sme sa aktualizovať centov sa 17 mod 10, čo je 7.
>> A potom rovnaké pre Nickels.
7 delené 5 je 1..
Dodávam, že do mincí.
A potom 7 mod 5 je 2.
A to je naša centov.
>> A potom, pre haliere, nie je tam žiadny skutočný bod delenie alebo modding, pretože,
ak máme 0,2 dolárov zostane, môžeme Len ihneď dodať, že do
náš počet mincí.
A konečne, musíme vytlačiť naše počet mincí a, voliteľne,
return 0 na konci nášho programu znamenať všetko fungovalo.
>> Volám sa Rob.
A to bol chamtivý.
>> [MUSIC PLAYBACK]