>> [MUSIK SPELA]
>> ROB BOWDEN: Hej.
Jag är Rob.
Och låt oss få giriga.
>> Så det första vi måste göra är fråga användaren exakt hur
mycket förändring är skyldig.
Så här ser vi att vi har en gör / while-slinga.
Och vi ställer dollar lika med getFloat.
Vad är getFloat?
Det är en av de funktioner i CS50 bibliotek som får en
flyta från användaren.
Kom ihåg att för att kunna använda denna funktion, vi måste hash inkludera
CS50.h upptill.
>> Så när vi har det värdet från användare, måste vi också vara säkra på att
det är ett giltigt värde.
Vi kan inte tacka negativ pengar.
Och så det är syftet av detta do / while-slinga.
Vi fortsätter att kretsa medan dollar är mindre än noll.
Och en gör / while-slinga är det rätta att använda här, eftersom vi måste be
användaren åtminstone en gång för hur mycket pengar är skyldig.
>> Så när vi har det antalet dollar, Vi ser här att vi har int cent
motsvarar runda dollar gånger CENTS_PER_DOLLAR.
Vid toppen, ser vi att CENTS_PER_DOLLAR är
förnuftigt definieras som 100.
Så vad är denna rad med?
>> Tja, om du kommer ihåg, flyttals värden är inte helt exakt.
Till skillnad heltal, kan vi inte representera flyttalsvärden exakt.
Det finns alltid någon form av vaghet.
Så vi föredrar att arbeta med bara heltal under hela detta problem.
Och här, om användaren angett $ 3,42, vi konvertera det till 342 cent och
avrundning, bara bli av något av det bristande precision.
>> Så när vi har det antal cent i ett heltal, kan vi fortsätta med det
Resten av programmet.
Vi ser här att vi förklara heltal mynt som vi är bara att använda
att hålla reda på det totala antalet mynt.
Här har vi vår första while-slinga.
>> Vi ser samtidigt cent är större än eller motsvarande kvartal, som ovan, är hash
definieras som 25, medan det är sant, vi vill öka vårt antal mynt
eller sänka cent per kvartal.
Kom ihåg att denna syntax motsvarar cent
lika cent minus kvartal.
De som är de samma.
>> Så vad gör detta samtidigt loop?
Tanken här är att om jag vet $ 3,42 är skyldig, kan jag fortsätta att ge
håll tills jag kan inte ge kvartal längre.
Jag kan inte ge fjärde något mer, när jag har gett $ 3,25.
>> Så då, när så är fallet, vi ska bryta sig ur denna while-slinga.
Cents blir kvar på 17 cent.
Och vi kommer att fortsätta ner till nästa medan loop där vi säger, medan cent
är större än eller lika med dime.
>> Och nu gör vi exakt samma som vi gjorde i kvartalet fallet,
utom med Dimes.
Så med $ 0,17, vi ska slinga tills vi kan inte längre ger ett öre, vilket är
exakt en gång.
Och sedan kommer vi att vara kvar med 7 cent.
>> Sedan ska vi fortsätta till Nickels, som kommer slinga tills vi inte kan ge
fler Nickels, som kommer lämnar oss med två cent.
Och sedan, ner på botten, har vi pennies, som kommer att slinga och kommer
äntligen lämna oss med noll cent.
Sedan i slutet, vi behöver bara skriva ut våra antal mynt.
>> Så det här programmet är helt rätt.
Men vi kan faktiskt göra lite bättre.
Nu om jag säger att jag är skyldig dig $ 10.000, du ska inte behöva gå här är en
kvartal, två kvartal, tre fjärdedelar.
Du ska veta direkt att Jag är skyldig dig 40.000 kvartal.
>> Låt oss nu titta på ett program som hanterar det lite bättre.
I denna version av saker, vi behöver fortfarande för att fråga användaren för den mängd
ändra på det de vill ha på exakt på samma sätt som vi gjorde tidigare.
Vi måste runda det exakt det sätt som vi gjorde tidigare.
Och vi har fortfarande våra mynt heltal förklarade exakt samma som tidigare.
>> Så här är där saker bli lite annorlunda.
Vi gör mynt plus jämlikar cent dividerat med kvartal
där kvartal är 25.
Vad detta säger är, ta så många håll som kan gå in i cent och lägga
att till mynt.
>> Så om cent är 142, 142 delat med 25 ger oss 5.
Kom ihåg att heltalsdivision trunkerar automatiskt.
Så vi gör mynt plus lika med 5.
>> Omedelbart efter detta, vi säger cent lika cent mod kvartalet.
Kom ihåg att mod operatören ger oss resten efter divisionen.
Så 142 mod kvartalet, kommer att ge är 142 minus 125, vilket är 17.
Det är resten efter gör 142 dividerat med 25.
>> Så nu cent är lika med 17.
Och vi gör exakt samma sak för Dimes.
17 dividerat med 10 ger oss 1.
Och vi tillägga att till mynt.
Och sedan uppdaterar vi cent till vara 17 mod 10, vilket är 7.
>> Och sedan samma för nickels.
7 delat med 5 är 1.
Lägg det till mynt.
Och sedan 7 mod 5 är 2.
Och det är våra cent.
>> Och sedan, för småpengar, det finns ingen riktig punkt i skilje eller modding, eftersom,
om vi har $ 0,2 kvar, vi kan bara genast tillägga att till
vårt antal mynt.
Och slutligen måste vi skriva ut våra antal mynt och, valfritt,
returnera 0 i slutet av vårt program att betyda allt fungerade.
>> Mitt namn är Rob.
Och detta var giriga.
>> [MUSIK SPELA]