>> [Música tocando]
>> ROB BOWDEN: Oi
Estou Rob.
E imos Greedy.
>> Entón o primeiro que temos que facer é pedir ao usuario exactamente como
moita cambio é debido.
Entón, aquí vemos que temos un do / while loop.
E nós estamos definindo dólares igual a GetFloat.
Que é GetFloat?
É unha das funcións do Biblioteca CS50 que recibe un
flotar, do usuario.
Teña en conta que, a fin de utilizar esta función, necesitamos botar incluír
CS50.h na parte superior.
>> Así, unha vez que temos que o valor da usuario, tamén necesitamos ter seguro de que
é un valor válido.
Non podemos deber cartos negativo.
E así, ese é o propósito deste do / while loop.
Seguimos looping mentres dólares é menor que cero.
E a / while é o correcto facer para escribir aquí, xa que necesitamos pedir ao
usuario polo menos unha vez para saber como canto diñeiro é debido.
>> Así, unha vez que temos ese número de dólares, vemos aquí temos centavos int
é igual a rolda dólares veces CENTS_PER_DOLLAR.
Na parte superior vemos que CENTS_PER_DOLLAR é
sensatamente definida como 100.
Entón, o que é esta liña está facendo?
>> Ben, se se lembra, punto flotante valores non son moi precisos.
A diferenza de números enteiros, non podemos representar valores de punto flotante exactamente.
Sempre hai algún tipo de imprecisión.
Por iso, prefiro traballar con só números enteiros todo este problema.
E aquí, se o usuario inseriu $ 3,42, estamos convertendo isto para 342 centavos e
redondeo, só se librar de calquera dos que imprecisión.
>> Así, unha vez que temos o número de centavos en un enteiro, podemos seguir co
resto do programa.
Vemos aquí que estamos declarando enteiro moedas que estamos só a usar
manter o control do total número de moedas.
Aquí, temos o noso primeiro loop while.
>> Vemos mentres centavos é maior ou igual trimestre, o que anteriormente, é de hash
definido como 25, mentres que é certo, temos quere incrementar o noso número de moedas
e decremento centavos por trimestre.
Lembre que esta sintaxe equivale a centavos
coincide céntimos menos trimestre.
Estes son o mesmo.
>> Entón o que é este loop while facendo?
A idea aquí é que, se eu sabe $ 3,42 é debido, podo seguir dando
apousentos ata que eu non podo dar barrios máis.
Eu non podo dar barrios máis, despois de xa ter dado dólares 3,25.
>> Entón, xa que este é o caso, nós imos saír deste loop while.
Cents se ve en 17 centavos.
E nós imos seguir ata a próxima while onde dicimos, mentres centavos
é maior que ou igual a Dime.
>> E agora estamos facendo a mesma exacta que fixemos no caso trimestre,
excepto con moedas de dez centavos.
Entón, co US $ 0,17, nós imos loop ata que pudermos xa non dou un peso, o que é
Roma.
E entón nós imos ir con 7 centavos.
>> Entón imos seguir moedas, que vai repetir ata que non podemos dar
máis ningunha recreo, que será deixar-nos con dous centavos.
E, a continuación, para abaixo, na parte inferior, temos tostões, que fará un loop e ganas
finalmente deixarnos con cero céntimos.
Entón, ao final, só necesitamos imprimir o noso número de moedas.
>> Polo tanto, este programa é perfectamente correcta.
Pero podemos realmente facer un pouco mellor.
Agora, se eu digo que debo a ti US $ 10.000, non precisa ir aquí está un
trimestre, dous cuartos, tres cuartos.
Ten que saber inmediatamente que Débolle 40.000 trimestres.
>> Agora imos ollar para un programa que manipula-lo un pouco mellor.
Nesta versión das cousas, aínda necesitamos pedir ao usuario para a cantidade de
cambiar o que eles queren exactamente do mesmo xeito que facía antes.
Necesitamos redondear exactamente de como fixemos antes.
E aínda temos as nosas moedas enteiro declarou exactamente a mesma de antes.
>> Entón, aquí é onde as cousas estar un pouco diferente.
Estamos facendo as moedas máis iguais céntimos divididos por trimestre
onde trimestre é 25.
O que isto quere dicir, ter como moitos trimestres como podo entrar en centavos e engadir
que para moedas.
>> Entón, se centavos é 142, 142 dividido por 25 dános 5.
Lembre que a división enteira trunca automaticamente.
Entón, nós estamos facendo as moedas máis é igual a 5.
>> Inmediatamente despois iso, estamos dicindo céntimos centavos igual trimestre mod.
Lembre que o operador mod dá nós o resto da división.
Entón 142 trimestre modificación, que dará é 142 menos 125, que é 17.
Iso é o resto tras facendo 142 dividido por 25.
>> Entón agora centavos é igual a 17.
E facemos exactamente o mesmo cousa para moedas.
17 dividido por 10 vai darnos 1.
E engadir que para moedas.
E entón, nós actualizamos céntimos para ser 17 mod 10, que é 7.
>> E, a continuación, o mesmo para recreo.
7 5 divídese por 1.
Engadir que a moedas.
E entón 7 mod 5 é 2.
E iso é nosos centavos.
>> E entón, por tostões, non hai verdadeira punto de división ou modding, xa que,
si temos 0,2 dólar sobrando, podemos basta engadir inmediatamente que a
noso número de moedas.
E, finalmente, necesitamos imprimir noso número de moedas e, opcionalmente,
voltar 0 ao final do noso programa para referirse a todo funcionou.
>> O meu nome é Rob.
E esta foi Greedy.
>> [Música tocando]