>> [Musikk spilles]
>> ROB BOWDEN: Hei.
Jeg er Rob.
Og la oss få Greedy.
>> Så det første vi må gjøre er å spørre brukeren nøyaktig hvordan
mye endring er skyldte.
Så her ser vi at vi har en gjør / while-løkke.
Og vi sette dollar lik GetFloat.
Hva er GetFloat?
Det er en av funksjonene i CS50-biblioteket som får en
flyte fra brukeren.
Husk, for å kunne bruke denne funksjonen, vi trenger til hasj omfatte
CS50.h på toppen.
>> Så når vi har denne verdien fra bruker, trenger vi også å være sikker på at
det er en gyldig verdi.
Vi kan ikke skylde negativ penger.
Og så det er hensikten av dette do / while-løkke.
Vi fortsetter looping mens dollar er mindre enn null.
Og en do / while løkke er den riktige tingen å bruke her, siden vi trenger å be
bruker minst en gang for hvor mye penger er skyldte.
>> Så når vi har det nummeret av dollar, vi ser her har vi int cent
tilsvarer runde dollar ganger CENTS_PER_DOLLAR.
Øverst, ser vi at CENTS_PER_DOLLAR er
fornuftig definert som 100.
Så hva er denne linjen gjør?
>> Vel, hvis du husker, flyttall verdier er ikke helt nøyaktig.
I motsetning til heltall, kan vi ikke representere flytverdier nøyaktig.
Det er alltid noe slag av unøyaktighet.
Så vi foretrekker å jobbe med bare heltall gjennom dette problemet.
Og her, hvis brukeren har angitt $ 3,42, vi konvertere den til 342 cent og
avrunding, bare bli kvitt noe av det imprecision.
>> Så når vi har antall cent i et heltall, kan vi fortsette med
Resten av programmet.
Vi ser her at vi erklære heltall mynter som vi er bare å bruke
å holde oversikt over det totale antall mynter.
Her har vi vår første mens loop.
>> Vi ser samtidig cent er større enn eller lik kvartal, som ovenfor, er hasj
definert som 25, mens det er sant, vi ønsker å øke vår antall mynter
og redusere trinnvis cent per kvartal.
Husk at dette syntaks tilsvarer cent
tilsvarer cent minus kvartal.
De er de samme.
>> Så hva er dette mens loop gjør?
Ideen her er at, hvis jeg vet $ 3,42 er skyldig, kan jeg fortsette å gi
kvartalene før jeg kan ikke gi kvartalene noe mer.
Jeg kan ikke gi kvartalene noe mer, når jeg har gitt $ 3.25.
>> Så da, når det er tilfelle, vil vi bryte ut av denne, mens sløyfen.
Cent vil bli liggende på 17 cent.
Og vi vil fortsette ned til neste mens loop der vi sier, mens cent
er større enn eller lik dime.
>> Og nå gjør vi det samme eksakte ting vi gjorde i kvartalet tilfelle,
unntatt med dimes.
Så med $ 0,17, vil vi sløyfe før vi kan ikke lenger gi en krone, som er
nøyaktig en gang.
Og da vil vi sitte igjen med 7 cent.
>> Deretter vil vi gå videre til nickels, som vil sløyfe før vi ikke kan gi
noen flere nickels, noe som vil forlate oss med to cent.
Og så, ned på bunnen, har vi pennies, som vil sløyfe og vil
endelig forlate oss med null cent.
Så på slutten, vi trenger bare å skrive ut vår antall mynter.
>> Så dette programmet er helt riktig.
Men vi kan faktisk gjøre litt bedre.
Nå hvis jeg sier at jeg skylder deg $ 10 000, du bør ikke trenger å gå her er en
kvartal, to kvartaler, tre fjerdedeler.
Du bør vite umiddelbart at Jeg skylder deg 40.000 kvartalene.
>> Nå la oss se på et program som håndterer det litt bedre.
I denne versjonen av ting, vi trenger fortsatt å spørre brukeren om mengden av
endre det de ønsker i akkurat på samme måte som vi gjorde før.
Vi trenger å runde det nøyaktig slik vi gjorde før.
Og vi har fortsatt våre mynter heltall erklærte akkurat det samme som før.
>> Så her er der ting få en litt annerledes.
Vi gjør mynter pluss likhets cent dividert kvartal
hvor kvartal er 25.
Hva dette sier er, ta så mange kvartalene som kan gå inn i cents og legge
som til mynter.
>> Så hvis cent er 142, 142 delt med 25 gir oss fem.
Husk at heltallsdivisjon avkorter automatisk.
Så vi gjør mynter pluss lik fem.
>> Umiddelbart etter dette, vi sier cent like cent mod kvartal.
Husk at mod operatøren gir oss resten etter divisjonen.
Så 142 mod kvartal, som vil gi er 142 minus 125, som er 17.
Det er resten etter gjør 142 delt på 25.
>> Så nå cent er lik 17.
Og vi gjør det samme eksakte ting for dimes.
17 delt på 10 vil gi oss en.
Og vi legger det til mynter.
Og da vi oppdaterer cent til være 17 mod 10, som er 7.
>> Og så det samme for nickels.
7 delt på fem er en.
Legg det til mynter.
Og deretter 7 mod 5 er to.
Og det er våre cent.
>> Og så, for pennies, det er ingen reell punkt i skifte eller modding, siden,
hvis vi har $ 0,2 til overs, kan vi bare straks legge til at å
vår antall mynter.
Og til slutt, må vi skrive ut vår antall mynter, og, eventuelt,
returnere 0 på slutten av programmet vårt å betegne alt fungerte.
>> Mitt navn er Rob.
Og dette var grådig.
>> [Musikk spilles]