>> [MUZIKO Ludanta]
>> ROB Bowden: Hi.
Mi Rob.
Kaj ni akiras Greedy.
>> Do la unua afero, kiun ni devas fari estas demandi la uzanto ekzakte kiom
multe ŝanĝo ŝuldas.
Do jen, ni vidas ni havas oni do / dum buklo.
Kaj ni opcio dolarojn egala al GetFloat.
Kio estas GetFloat?
Ĝi estas unu el la funkcioj en la CS50 biblioteko kiu ricevas
flosi de la uzanto.
Memoru, en ordo uzi tiun funkcion, ni bezonas hash inkluzivi
CS50.h ĉe la supro.
>> Do iam ni havas tiun valoron de la uzanton, ni ankaŭ bezonos esti certa ke
ĝi estas valida valoro.
Ni ne povas ŝuldas negativa mono.
Kaj tial ke estas la celo de tiu do / dum buklo.
Ni daŭre looping dum dolarojn estas malpli ol nulo.
Kaj do / dum buklo estas la ĝusta afero uzi ĉi tie, ĉar ni devas demandi la
uzanton almenaŭ unufoje dum kiom multan monon estas ŝuldas.
>> Do iam ni havos, ke nombro da dolaroj, ni vidas ĉi tie ni havas int cendojn
egalas ronda dolaroj fojoj CENTS_PER_DOLLAR.
Ĉe la supro, ni vidas, ke CENTS_PER_DOLLAR estas
sencoplene difinita kiel 100.
Do kio estas tiu linio faras?
>> Nu, se vi memoras, glitpunkta valoroj ne estas sufiĉe preciza.
Kontraste entjeroj, ni ne povas reprezenti glitpunktaj valoroj ekzakte.
Ĉiam ian de imprecision.
Do ni preferas labori per nur entjeroj laŭlonge de ĉi tiu problemo.
Kaj tie, se la uzanto eniris $ 3,42, ni konvertanta ke al 342 cendoj kaj
rondigas, nur liveris de neniu el kiuj imprecision.
>> Do iam ni havas la nombro da cendoj en entjera, ni povas daŭrigi kun la
resto de la programo.
Oni vidas ĉi tie ke ni deklarante entjero moneroj kiuj ni estas nur uzi
konservi spuron de la tuta nombro de moneroj.
Tie, ni havas niajn unuajn dum buklo.
>> Ni vidas dum cendoj estas pli granda ol aŭ egala al kvarono, kiuj supre, estas hash
difinita kiel 25, kvankam tio estas vera, ni ĉu pliigo nia nombro de moneroj
kaj dekremento cendoj en kazerno.
Memoru, ke ĉi tiu sintakso estas ekvivalento al cendoj
egalas cendoj minus trimestro.
Tiuj estas la sama.
>> Do kio estas ĉi tio dum buklo faras?
La ideo estas, ke, se mi konas $ 3,42 Estas ŝuldis, mi povas daŭrigi donante
kazernoj ĝis mi ne povas doni kazernoj plu.
Mi ne povas doni kvaraj plu, iam mi donis $ 3.25.
>> Do tiam, iam tio estas la kazo, ni Frakasu de ĉi dum buklo.
Cendoj estos lasita je 17 cendoj.
Kaj ni vidos daŭrigi malsupren al la sekva dum buklo kie ni diru, dum cendojn
estas pli granda ol aŭ egala al centonon.
>> Kaj nun ni faras la saman ĝusta afero, kiun ni faris en la kvara kazo,
krom kun argentajn monerojn.
Do kun $ 0.17, ni buklo ĝis ni povas ne plu donos groŝon, kiu estas
precize unufoje.
Kaj tiam ni devos resti kun 7 cendojn.
>> Tiam ni daŭrigas sur Nickels, kiuj estos buklo ĝis ni ne povas doni
plu Nickels, kiuj volas forlasi nin per du cendojn.
Kaj poste, sube ĉe la malsupro, ni havi monerojn, kiuj volas buklo kaj volo
fine forlasi nin per nulo cendoj.
Tiam ĉe la fino, ni devas nur presi nian numeron de moneroj.
>> Do tiu programo estas perfekte ĝustaj.
Sed ni povas efektive fari iom pli bone.
Nun, se mi diras ke mi ŝuldas al vi $ 10,000, Vi devus ne bezonas iri tien estas unu
kvara, du kvaraj, tri kvaronoj.
Vi devus scii ke tuj Mi ŝuldas al vi 40.000 kazernoj.
>> Nun ni rigardu programo kiu manipulas iom pli bone.
En ĉi tiu versio de la aferoj, ni ankoraŭ bezonas demandi la uzanto pro la kvanto de
ŝanĝi tion ili volas havi en ĝuste la sama maniero ni faris antaŭe.
Ni bezonos por rondigi ĝin precize la vojo ni faris antaŭe.
Kaj ni ankoraŭ havas niajn monerojn entjero deklaris ekzakte la sama kiel antaŭe.
>> Do tie estas kie aferoj preni iom malsama.
Ni faras monerojn plus egaluloj cendoj dividita per kvarono
kie kvarono estas 25.
Kion tio estas diranta estas, preni kiel multaj kvaraj kiel povas iri en cendoj kaj aldoni
ke al moneroj.
>> Do se cendoj estas 142, 142 dividita 25 donas al ni 5.
Memoru ke entjera divido aŭtomate senpintigas.
Do ni faras monerojn plus egalas 5.
>> Tuj post tio, ni jene cendoj egalas cendoj mod trimestro.
Memoru ke la mod operatoro donas ni la resto post divido.
Do 142 mod kvara, kiu donos Estas 142 minus 125, kiu estas 17.
Tio estas la resto post faranta 142 dividita per 25.
>> Do nun cendoj egalas al 17.
Kaj ni faru la samajn ĝusta afero por argentajn monerojn.
17 dividita per 10 donos al ni 1.
Kaj ni aldonu, ke por moneroj.
Kaj tiam ni ĝisdatigi cendojn por estos 17 mod 10, kiu estas 7.
>> Kaj tiam la sama por Nickels.
7 dividitaj per 5 estas 1.
Aldoni, ke por moneroj.
Kaj tiam 7 mod 5 estas 2.
Kaj tio estas nia cendoj.
>> Kaj tiam, por monerojn, ne estas reala punkto en dividanta aŭ modding, ekde,
se ni havas $ 0,2 lasis super, ni povas ĝuste tuj aldoni, ke por
nia nombro de moneroj.
Kaj fine, ni bezonas por presi nian nombro de moneroj kaj, laŭvole,
revenu 0 je la fino de nia programo por signifi ĉio funkciis.
>> Mia nomo estas Rob.
Kaj tio estis Greedy.
>> [MUZIKO Ludanta]