>> [REPRODUCCIÓ DE MÚSICA]
>> ROB Bowden: Hi.
Sóc Rob.
I arribarem cobdiciós.
>> Així que el primer que hem de fer es demanarà a l'usuari exactament com
es va deure en gran part del canvi.
Així que aquí, veiem que tenim un document / while.
I estem establint dòlars igual a GetFloat.
Què és GetFloat?
És una de les funcions en el Biblioteca CS50 que rep una
surar des de l'usuari.
Recordeu, per tal d'utilitzar aquesta funció, que necessitem per discutir inclouen
CS50.h a la part superior.
>> Així que una vegada que tinguem el valor de la usuari, també hem d'estar segurs que
que és un valor vàlid.
No podem deure diners negatiu.
I així, aquest és el propòsit d'aquest do / while.
Seguim bucle mentre dòlars és menor que zero.
I un fitxer / while és el correcte per fer utilitzar aquí, ja que hem de demanar a la
usuari almenys una vegada durant quant Quants diners se li deu.
>> Així que una vegada que tinguem aquesta quantitat de dòlars, Veurem aquí tenim int centaus
equival volta dòlars temps CENTS_PER_DOLLAR.
A la part superior, veiem que CENTS_PER_DOLLAR és
sensiblement definit com 100.
Llavors, què està fent aquesta línia?
>> Bé, si vostè recorda, en coma flotant Els valors no són molt precisos.
A diferència dels nombres enters, no podem representar valors de punt flotant amb exactitud.
Sempre hi ha algun tipus d'imprecisió.
Així que preferim treballar amb només nombres enters al llarg d'aquest problema.
I aquí, si l'usuari introdueix $ 3,42, estem convertint aquesta a 342 centaus de dòlar i
arrodoniment, simplement desfer-se de qualsevol que la imprecisió.
>> Així que una vegada que tinguem el nombre de centaus en un nombre enter, es pot continuar amb el
resta del programa.
Veiem aquí que estem declarant sencer monedes que estem a només usar
per portar un registre del total nombre de monedes.
Aquí, tenim el nostre primer bucle while.
>> Veiem mentre centaus és major o igual al trimestre, que anteriorment, és de hash
definit com el 25, mentre que això és cert, vol incrementar el nostre nombre de monedes
i centaus decrement per trimestre.
Recordi que aquesta sintaxi és equivalent a centaus
iguals centaus menys quart.
Aquests són el mateix.
>> Llavors, què està fent aquest bucle while?
La idea és que, si conec $ 3,42 que es deu, que puc seguir donant
trimestres fins que no pugui donar trimestres més.
No puc donar trimestres més, una vegada que m'he donat 3,25 $.
>> Així doncs, una vegada que aquest és el cas, anem a trencar aquest bucle while.
Cents es deixaran en 17 centaus de dòlar.
I continuarem fins a la propera while on diem, mentre centaus
és més gran que o igual a la moneda de deu centaus.
>> I ara que estem fent exactament el mateix cosa que vam fer al trimestre cas,
excepte amb monedes de deu centaus.
Així que amb 0,17 $, anem a bucle fins que puguem ia no donar ni un cèntim, que és
exactament una vegada.
I després ens quedarem amb 7 centaus.
>> Després continuarem a monedes de cinc centaus, que es repetirà fins que no puguem donar
les més de cinc centaus, que ens deixa amb dos centaus.
I a continuació, cap avall a la part inferior, tenim monedes d'un cèntim, que es repetirà i es
finalment ens deixa amb zero centaus.
Després, al final, només hem de imprimir el nostre nombre de monedes.
>> Així que aquest programa és perfectament correcte.
Però en realitat podem fer una mica millor.
Ara bé, si jo dic que li dec 10.000 $ que no cal anar aquí és una
trimestre, dos trimestres, les tres quartes parts.
Vostè ha de saber immediatament que Et dec 40 mil quarts.
>> Ara donem una ullada a un programa que maneja una mica millor.
En aquesta versió de les coses, encara necessitem per preguntar a l'usuari per la quantitat de
un canvi que ells volen exactament de la mateixa manera que vam fer abans.
Necessitem reunir exactament la forma en què ho va fer abans.
I encara tenim les nostres monedes sencer declarat exactament el mateix que abans.
>> Així que aquí és on les coses ser una mica diferent.
Estem fent les monedes més iguals centaus dividits per trimestre
on trimestre és de 25.
El que això diu és, prendre la major quantitat trimestres com poden entrar en centaus i afegiu
que a les monedes.
>> Així que si centaus són 142, 142 dividit per 25 ens dóna 5.
Recordeu que la divisió entera trunca automàticament.
Així que estem fent les monedes més és igual a 5.
>> Immediatament després d'això, estem dient centaus centaus iguals trimestre mod.
Recordeu que l'operador mod dóna nosaltres el que queda després de la divisió.
Així trimestre 142 mod, que donarà és a dir 142 menys 125, que és 17.
Això és el que queda després d' fent 142 dividit per 25.
>> Així que ara centaus és igual a 17.
I fem el mateix exacta cosa de deu centaus.
17 dividit per 10 ens donarà 1.
I afegim que a les monedes.
I després actualitzem centaus a ser 17 mod 10, que és 7.
>> I a continuació, el mateix per monedes de cinc centaus.
7 dividit per 5 és 1.
Afegeix que per a les monedes.
I després 7 mod 5 és 2.
I aquesta és la nostra centaus.
>> I després, per uns centaus, no hi ha veritable punt de divisió o modding, ja que,
si tenim $ 0.2 sobra, podem només ha d'afegir immediatament que
nostre número de monedes.
I finalment, hem de imprimir el nostre nombre de monedes i, opcionalment,
retorna 0 al final del nostre programa per significar tot el que s'ha treballat.
>> El meu nom és Rob.
I això era cobdiciós.
>> [REPRODUCCIÓ DE MÚSICA]