[Speel van musiek] ROB BOWDEN: Hi. Ek is Rob. En laat ons Greedy. Dus is die eerste ding wat ons moet doen is vra die gebruiker presies hoe veel verandering verskuldig is. So hier is, sien ons ons het 'n doen / lus. En ons is die opstel van dollars gelyk aan GetFloat. Wat is GetFloat? Dit is een van die funksies in die CS50 biblioteek wat kry 'n dryf van die gebruiker. Onthou, ten einde daardie funksie te gebruik, ons nodig het om hash sluit CS50.h aan die bokant. So Sodra ons daardie waarde van die gebruiker, ons moet ook seker maak dat dit is 'n geldige waarde. Ons kan nie 'n negatiewe geld skuld. En so dit is die doel van hierdie do / while lus. Ons gaan voort om herhaling terwyl dollars is minder as nul. En 'n doen / lus is om die regte ding hier te gebruik, aangesien ons nodig het om te vra om die gebruikers ten minste een keer vir hoe veel geld geskuld. So Sodra ons daardie aantal dollars, ons hier sien ons het int sent gelyk ronde dollars keer CENTS_PER_DOLLAR. Op die top, sien ons dat CENTS_PER_DOLLAR is sinvol gedefinieer as 100. So, wat is die lyn te doen? Wel, as jy onthou, swaai punt waardes is nie heeltemal akkuraat. In teenstelling met heelgetalle, kan ons nie voorstel swaai punt waardes presies. Daar is altyd 'n soort van onakkuraatheid. So het ons verkies om te werk met net heelgetalle Dwarsdeur hierdie probleem. En hier, indien die gebruiker aangegaan $ 3,42, ons die omskakeling wat aan 342 sent en afronding, net ontslae te raak van enige van daardie onakkuraatheid. So as ons die aantal sent in 'n heelgetal is, kan ons voortgaan met die res van die program. Ons sien hier dat ons heelgetal is verklaar muntstukke wat ons is net te gebruik tred te hou van die totale aantal muntstukke. Hier het ons ons eerste while loop. Ons sien terwyl sent groter as of gelyk aan kwartaal, wat bo is hash gedefinieer as 25, terwyl dit waar is, ons wil ons nommer van die muntstukke te inkrementeer en decrement sent per kwartaal. Onthou dat hierdie sintaksis is gelykstaande aan sent gelyk sent minus kwartaal. Dit is dieselfde. So, wat is dit terwyl loop doen? Die idee hier is dat, as ek weet $ 3,42 verskuldig is, kan ek voortgaan om kwartale totdat ek kan nie gee kwartale meer. Ek kan nie kwartale gee nie meer nie, nadat ek gegee het $ 3,25. So dan, wanneer dit die geval is, sal ons breek uit hierdie while loop. Sent gelaat sal word op 17 sent. En ons sal voortgaan om na die volgende terwyl loop waar ons sê, terwyl sent groter as of gelyk aan sent. En nou is ons doen presies dieselfde ding wat ons gedoen het in die kwartaal geval, behalwe met dimes. So met $ 0,17, sal ons lus totdat ons kan nie meer 'n sent gee, wat presies een keer. En dan sal ons gelaat word met 7 sent. Dan sal ons voortgaan om op te Nickels, wat sal loop totdat ons nie kan gee meer Nickels, wat sal laat ons met twee sent. En dan, op die bodem, ons het pennies, wat sal loop en sal Uiteindelik laat ons met 'n nul sent. Dan aan die einde, het ons net nodig het om te druk ons ​​nommer van die muntstukke. So hierdie program is heeltemal korrek is. Maar ons kan eintlik 'n bietjie beter te doen. Nou as ek sê dat ek skuld jou $ 10000, jy moet nie nodig om te gaan hier is een kwartaal, twee kwartale, drie kwartale. Jy moet dadelik weet dat Ek skuld jou 40000 kwartale. Nou laat ons kyk na 'n program wat hanteer dit 'n bietjie beter. In hierdie weergawe van die dinge wat ons nog nodig het die gebruiker vir die bedrag van om te vra verander wat hulle wil in presies dieselfde manier wat ons gedoen het nie. Ons het dit nodig om presies te rond die manier waarop ons gedoen het voor. En ons het nog steeds ons munte heelgetal verklaar presies dieselfde as voorheen. So hier is waar dinge 'n bietjie anders. Ons doen munte plus gelykes sent gedeel deur kwartaal waar kwartaal is 25. Wat dit sê is, neem soveel kwartiere as kan gaan in sent en voeg wat aan munte. So as sent is 142, 142 verdeel 25 gee ons 5. Onthou dat heelgetal afdeling kapt outomaties. So ons doen munte plus gelyk aan 5. Onmiddellik na hierdie, sê ons sent gelyk sent mod kwartaal. Onthou dat die mod operateur gee ons die res na afdeling. So 142 mod kwartaal, wat gee is 142 minus 125, wat is 17. Dit is die res na doen 142 gedeel deur 25. So nou sent is gelyk aan 17. En ons doen presies dieselfde ding vir dimes. 17 gedeel deur 10 gee ons 1. En ons byvoeg dat muntstukke. En dan het ons sent te werk wees 17 mod 10, wat is 7. En dan dieselfde vir vernikkelt. 7 gedeel deur 5 is 1. Voeg wat aan munte. En dan 7 mod 5 is 2. En dit is ons sent. En dan, vir pennies, daar is geen werklike punt in skeidslyn of modding, aangesien, As ons 'n $ 0,2 oorgebly het, kan ons net onmiddellik byvoeg dat ons nommer van die muntstukke. En ten slotte, moet ons uit te druk ons aantal munte en, opsioneel, terug 0 aan die einde van ons program alles dui gewerk. My naam is Rob. En dit was Greedy. [Speel van musiek]