>> [Musikgengivelse]
>> ROB BOWDEN: Hej.
Jeg er Rob.
Og lad os få grådige.
>> Så det første, vi skal gøre er at spørge brugeren, præcis hvordan
meget forandring er skyldige.
Så her ser vi, vi har en do / while-løkke.
Og vi sætte dollars lig GetFloat.
Hvad er GetFloat?
Det er en af ​​funktionerne i CS50 bibliotek, der får en
flyde fra brugeren.
Husk, at for at bruge denne funktion, vi nødt til at hash omfatte
CS50.h på toppen.
>> Så når vi har at værdien fra bruger vi også nødt til at være sikre på, at
det er en gyldig værdi.
Vi kan ikke skylder negativ penge.
Og så er formålet af denne do / while-løkke.
Vi fortsætter looping mens dollars er mindre end nul.
Og en do / while-løkke er det rigtige at bruge her, da vi er nødt til at spørge
bruger mindst en gang for, hvordan mange penge skylder.
>> Så når vi har at antallet af dollars, vi ser her har vi int cents
lig rund dollar gange CENTS_PER_DOLLAR.
Øverst ser vi, at CENTS_PER_DOLLAR er
fornuftigt defineret som 100.
Så hvad er denne linie gør?
>> Tja, hvis du kan huske, floating point værdier er ikke helt nøjagtige.
I modsætning til heltal, kan vi ikke repræsentere kommeværdier nøjagtigt.
Der er altid en slags af upræcise.
Så vi foretrækker at arbejde med blot heltal hele dette problem.
Og her, hvis brugeren indtaster $ 3,42, vi har omregnet til 342 cent og
afrunding, bare slippe af med noget af det upræcise.
>> Så når vi har det antal cents i et heltal, kan vi fortsætte med det
resten af ​​programmet.
Vi ser her, at vi erklære heltal mønter, som vi er kun at bruge
at holde styr på den samlede antal mønter.
Her har vi vores første while-løkke.
>> Vi ser mens cent er større end eller svarende til kvartal, hvilket ovenfor er hash
defineret som 25, mens det er sandt, vi ønsker at forøge vores antal af mønter
og formindskelsen cents fra kvartal.
Husk, at denne syntaks svarer til cents
lig cents minus kvartal.
De er de samme.
>> Så hvad er dette, mens løkke gør?
Ideen her er, at hvis jeg ved $ 3,42 skylder, kan jeg fortsætte med at give
kvartaler, indtil jeg ikke kan give kvartaler mere.
Jeg kan ikke give kvartaler mere, når jeg har givet 3,25 dollar.
>> Så så, når det er tilfældet, vi vil bryde ud af denne while-løkke.
Cents vil blive efterladt på 17 cents.
Og vi vil fortsætte ned til den næste mens løkke, hvor vi siger, mens cents
er større end eller lig med skilling.
>> Og nu skal vi gøre det samme nøjagtige , vi gjorde i kvartalet tilfælde
undtagen med Dimes.
Så med $ 0,17, vi vil løkke, indtil vi kan ikke længere at give en skilling, der er
præcis én gang.
Og så vil vi stå tilbage med 7 cent.
>> Så vil vi fortsætte til nickels, som vil løkke, indtil vi ikke kan give
flere Nickels, som vil efterlade os med to cent.
Og så ned i bunden, vi har øre, der vil sløjfe og vil
endelig efterlade os med nul cents.
Så i sidste ende, vi bare nødt til at udskrive vores antal mønter.
>> Så dette program er helt korrekt.
Men vi kan faktisk gøre en smule bedre.
Nu, hvis jeg siger, at jeg skylder dig $ 10.000, bør du ikke behøver at gå her er en
kvartal, to kvartaler, tre kvartaler.
Du skal vide det samme, at Jeg skylder dig 40.000 kvartaler.
>> Lad os nu se på et program, der håndterer det en smule bedre.
I denne version af ting, vi stadig har brug for til at bede brugeren om mængden af
ændre det de ønsker i præcis samme måde, som vi gjorde før.
Vi er nødt til at runde det nøjagtigt den måde, vi gjorde før.
Og vi har stadig vores mønter heltal erklæret nøjagtig den samme som før.
>> Så her er, hvor tingene få en smule anderledes.
Vi laver mønter plus ligemænd cents divideret kvartal
hvor kvartal er 25..
Hvad dette siger er, tage så mange kvartaler som kan gå ind i cent og tilføje
at mønter.
>> Så hvis cents er 142, 142 delt 25 giver os 5.
Husk, at integer division automatisk afkorter.
Så vi laver mønter plus lig 5..
>> Umiddelbart efter dette, vi siger cents lige cents mod kvartal.
Husk, at den mod operatør giver os efter division.
Så 142 mod kvartal, vil der giver er 142 minus 125, hvilket er 17.
Det er resten efter gør 142 divideret med 25.
>> Så nu cents er lig med 17..
Og vi gør nøjagtig de samme ting for Dimes.
17 divideret med 10 vil give os 1.
Og vi tilføje, at til mønter.
Og derefter opdatere vi cent til være 17 mod 10, hvilket er 7.
>> Og så det samme for Nickels.
7 divideret med 5 er 1.
Føj det til mønter.
Og derefter 7 mod 5 er 2..
Og det er vores cents.
>> Og så, for øre, er der ingen reel punkt i skillelinje eller modding, da,
hvis vi har $ ,2 tilovers, kan vi bare straks tilføje, at for at
vores antal mønter.
Og endelig har vi brug for at udskrive vores antal mønter og eventuelt
returnere 0 i slutningen af ​​vores program til at betyde alt arbejdet.
>> Mit navn er Rob.
Og dette var grådige.
>> [Musikgengivelse]