[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]