>> [Muziek]
>> ROB BOWDEN: Hi.
Ik ben Rob.
En laten we Greedy.
>> Dus het eerste wat we moeten doen precies hoe de gebruiker vragen
veel verandering is verschuldigd.
Dus hier zien we we hebben een do / while lus.
En we zijn het instellen van dollars gelijk aan GetFloat.
Wat is GetFloat?
Het is een van de functies in de CS50 bibliotheek die een krijgt
drijven van de gebruiker.
Vergeet niet, om die functie te gebruiken, we moeten hash omvatten
CS50.h aan de top.
>> We zo eens hebben dat de waarde van de gebruiker, moeten we ook zeker van zijn dat
het is een geldige waarde.
We kunnen niet schuldig negatief geld.
En dat is dus het doel van deze do / while lus.
We blijven lus terwijl de dollar kleiner is dan nul.
En een do / while lus is het juiste ding om hier te gebruiken, omdat we moeten vragen aan de
gebruiker ten minste eenmaal hoe veel geld verschuldigd is.
>> We zo eens hebben dat aantal dollars, we zien hier hebben we int cent
evenaart ronde dollars tijden CENTS_PER_DOLLAR.
Op de top, zien we dat CENTS_PER_DOLLAR is
verstandig gedefinieerd als 100.
Dus wat is deze lijn doet?
>> Nou, als u het zich herinnert, floating point waarden zijn niet helemaal nauwkeurig.
In tegenstelling tot de gehele getallen, kunnen we niet vertegenwoordigen floating point waarden precies.
Er is altijd een soort van onnauwkeurigheid.
Dus we werken liever met alleen gehele getallen in dit probleem.
En hier, als de gebruiker $ 3,42, we omzetten die tot 342 cent en
afronding, alleen te ontdoen van een van die onnauwkeurigheid.
>> Dus zodra we hebben het aantal centen in een geheel getal, kunnen we verder met de
rest van het programma.
We zien hier dat we verklaren integer munten die we maar te gebruiken
bij te houden van de totale aantal munten.
Hier hebben we onze eerste while lus.
>> We zien terwijl cent hoger is dan of gelijk kwartaal, dat bovenstaande, is hash
gedefinieerd als 25, terwijl dat waar we willen onze aantal munten te verhogen
en decrement cent per kwartaal.
Vergeet niet dat deze syntaxis is gelijk aan cent
gelijk cent minus kwartaal.
Dat zijn hetzelfde.
>> Dus wat is deze while lus aan het doen?
Het idee hier is dat, als ik weet $ 3,42 verschuldigd is, kan ik blijven geven
kwartalen totdat ik kan niet geven kwartalen niet meer.
Ik kan niet kwartalen geven meer, zodra ik gegeven heb $ 3,25.
>> Zo dan, zodra dat het geval is, zullen we breken van deze while lus.
Cent zal op 17 cent worden gelaten.
En we omlaag naar de volgende blijven while loop waar we zeggen, terwijl cent
groter of gelijk aan dime.
>> En nu doen we precies dezelfde wat we deden in het kwartaal geval,
behalve met dubbeltjes.
Dus met $ 0,17, we lus totdat we kunnen niet langer een dubbeltje, die geven
precies een keer.
En dan zullen we blijven zitten met 7 cent.
>> Dan gaan we verder naar stuivers, die zal lus totdat kunnen we niet geven
meer stuivers, die zal laat ons met twee cent.
En dan, op de bodem, we penningen, die wordt herhaald en zal
eindelijk ons ​​verlaten met nul cent.
Aan het einde, moeten we gewoon uitprinten onze aantal munten.
>> Dus dit programma is volkomen juist.
Maar we kunnen eigenlijk doen een beetje beter.
Nu als ik zeg dat ik je schuldig $ 10.000, moet je niet hoeft te gaan hier is een
kwartaal, twee kwartalen, drie kwartalen.
U moet onmiddellijk weten dat Ik ben je 40.000 kwartalen.
>> Laten we nu eens kijken naar een programma dat behandelt het een beetje beter.
In deze versie van de dingen, we moeten nog steeds om de gebruiker voor de hoeveelheid vragen
veranderen dat ze willen precies op dezelfde manier waarop we voorheen.
We moeten het precies afronden de manier deden we eerder.
En we hebben nog steeds onze munten integer precies aangegeven hetzelfde als voorheen.
>> Dus hier is waar de dingen een beetje anders.
We doen munten plus gelijken cent opgedeeld per trimester
waar kwartaal is 25.
Wat dit zegt is, neem zoveel kwartalen kan gaan in centen en voeg
dat om munten.
>> Dus als cent is 142, 142 verdeeld door 25 geeft ons 5.
Vergeet niet dat deling van gehele getallen automatisch afgekapt.
Dus we doen munten plus is gelijk aan 5.
>> Meteen na dit, we zeggen cent gelijk cent mod kwartaal.
Vergeet niet dat de mod operator geeft ons de rest na deling.
Dus 142 mod kwartaal, dat geeft is 142 minus 125, dat is 17.
Dat is de rest na doen 142 gedeeld door 25.
>> Nu cent gelijk aan 17.
En dat doen we precies dezelfde ding voor dubbeltjes.
17 gedeeld door 10 zal ons 1 geven.
En wij die toe te voegen aan munten.
En dan centen werken we aan zijn 17 mod 10, dat is 7.
>> En dan is het hetzelfde voor stuivers.
7 gedeeld door 5 1.
Voeg dat toe aan munten.
En dan 7 mod 5 is 2.
En dat is onze centen.
>> En dan, voor de centen, is er geen echte punt in scheidslijn of modding, omdat,
als we $ 0,2 overblijft, kunnen we gewoon direct toevoegen dat aan
onze aantal munten.
En tenslotte moeten we om uit te printen onze aantal munten en, eventueel,
0 terug te keren op het einde van ons programma om alles te betekenen heeft gewerkt.
>> Mijn naam is Rob.
En dit was Greedy.
>> [Muziek]