>> [Música tocando]
>> ROB BOWDEN: Oi.
Estou Rob.
E vamos Greedy.
>> Então a primeira coisa que precisamos fazer é pedir ao usuário exatamente como
muita mudança é devido.
Então, aqui, vemos que temos um do / while loop.
E nós estamos definindo dólares igual a GetFloat.
O que é GetFloat?
É uma das funções do Biblioteca CS50 que recebe um
flutuar, do utilizador.
Lembre-se, a fim de usar essa função, precisamos botar incluir
CS50.h no topo.
>> Assim, uma vez que temos que o valor da usuário, também precisamos ter certeza de que
é um valor válido.
Não podemos dever dinheiro negativo.
E assim, esse é o propósito deste do / while loop.
Continuamos looping enquanto dólares é menor do que zero.
E a / while é a coisa certa fazer para usar aqui, uma vez que precisamos de pedir ao
usuário pelo menos uma vez para saber como quanto dinheiro é devido.
>> Assim, uma vez que temos esse número de dólares, vemos aqui temos centavos int
é igual a rodada dólares vezes CENTS_PER_DOLLAR.
No topo, vemos que CENTS_PER_DOLLAR é
sensatamente definida como 100.
Então, o que é esta linha está fazendo?
>> Bem, se você se lembra, ponto flutuante valores não são muito precisos.
Ao contrário de números inteiros, não podemos representar valores de ponto flutuante exatamente.
Há sempre algum tipo de imprecisão.
Por isso, prefiro trabalhar com apenas números inteiros todo este problema.
E aqui, se o usuário digitou $ 3,42, estamos convertendo isso para 342 centavos e
arredondamento, apenas se livrar de qualquer um dos que imprecisão.
>> Assim, uma vez que temos o número de centavos em um inteiro, podemos continuar com o
resto do programa.
Vemos aqui que estamos declarando inteiro moedas que estamos apenas a usar
manter o controle do total número de moedas.
Aqui, nós temos o nosso primeiro loop while.
>> Vemos enquanto centavos é maior ou igual trimestre, o que anteriormente, é de hash
definido como 25, enquanto que é verdade, temos quer incrementar o nosso número de moedas
e decremento centavos por trimestre.
Lembre-se que esta sintaxe é equivalente a centavos
é igual centavos menos trimestre.
Esses são o mesmo.
>> Então o que é este loop while fazendo?
A idéia aqui é que, se eu souber $ 3,42 é devido, eu posso continuar dando
aposentos até que eu não posso dar bairros mais.
Eu não posso dar bairros mais, depois de já ter dado US $ 3,25.
>> Então, uma vez que esse é o caso, nós vamos sair deste loop while.
Cents vai ficar em 17 centavos.
E nós vamos continuar até a próxima while onde dizemos, enquanto centavos
é maior do que ou igual a dime.
>> E agora estamos fazendo a mesma exata coisa que fizemos no caso trimestre,
exceto com moedas de dez centavos.
Então, com US $ 0,17, nós vamos loop até que pudermos já não dou um centavo, o que é
exatamente uma vez.
E então nós vamos ficar com 7 centavos.
>> Então vamos continuar a moedas, que vai repetir até que não podemos dar
mais nenhuma níqueis, que será deixar-nos com dois centavos.
E, em seguida, para baixo, na parte inferior, temos tostões, que fará um loop e vontade
finalmente nos deixar com zero cêntimos.
Então, no final, só precisamos imprimir o nosso número de moedas.
>> Portanto, este programa é perfeitamente correta.
Mas podemos realmente fazer um pouco melhor.
Agora, se eu digo que eu devo a você US $ 10.000, você não precisa ir aqui está um
trimestre, dois quartos, três quartos.
Você deve saber imediatamente que Devo-lhe 40.000 trimestres.
>> Agora vamos olhar para um programa que manipula-lo um pouco melhor.
Nesta versão das coisas, ainda precisamos pedir ao usuário para a quantidade de
mudar o que eles querem exatamente da mesma forma que fazia antes.
Precisamos arredondar exatamente da forma como fizemos antes.
E ainda temos nossas moedas inteiro declarou exatamente a mesma de antes.
>> Então, aqui é onde as coisas ficar um pouco diferente.
Estamos fazendo as moedas mais iguais centavos divididos por trimestre
onde trimestre é 25.
O que isto quer dizer é, ter como muitos trimestres como posso entrar em centavos e adicionar
que para moedas.
>> Então, se centavos é 142, 142 dividido por 25 nos dá 5.
Lembre-se que a divisão inteira trunca automaticamente.
Então, nós estamos fazendo as moedas mais é igual a 5.
>> Imediatamente após isso, nós estamos dizendo centavos centavos igual trimestre mod.
Lembre-se que o operador mod dá nós o resto da divisão.
Então 142 trimestre modificação, que vai dar é 142 menos 125, que é 17.
Isso é o resto depois fazendo 142 dividido por 25.
>> Então agora centavos é igual a 17.
E fazemos exatamente o mesmo coisa para moedas.
17 dividido por 10 vai dar-nos 1.
E acrescentar que para moedas.
E então, nós atualizamos centavos para ser 17 mod 10, que é 7.
>> E, em seguida, o mesmo para níqueis.
7 5 é dividida por 1.
Acrescentar que a moedas.
E então 7 mod 5 é 2.
E isso é nossos centavos.
>> E então, por tostões, não há verdadeira ponto de divisão ou modding, já que,
se temos 0,2 dólar sobrando, podemos basta acrescentar imediatamente que a
nosso número de moedas.
E, finalmente, precisamos de imprimir nosso número de moedas e, opcionalmente,
retornar 0 no final do nosso programa para significar tudo funcionou.
>> Meu nome é Rob.
E esta foi Greedy.
>> [Música tocando]