Untitled

 avatar
user_2455805
plain_text
2 years ago
2.0 kB
7
Indexable
Never
#include<stdio.h>
#include<math.h>
#include<cs50.h>

int main()
{
    //Declaração das variáveis
    int moeda, cont, valor, total;
    float num = 0;

    while (num <= 0)
    {
        num = get_float("\nChange Owed:    "); //Comando de entrada devidamente validado pelo CS50
    }

    valor = round(num * 100); //Transformando número real em inteiro andando duas casas decimais para direita

    total = valor; //Total sendo colocando em outra variável para ser fatiado
    moeda = 25; //Moeda de valor máximo, que depois irá armazenar as moedas de menor valor
    cont = 0; // Contador da quantidade de moedas usadas para entregar o troco certo.

    while (true)
    {
        if (total >= moeda) //Enquanto o valor recebido for maior que a moeda máxima;
        {
            total -= moeda; //Sera retirado do valor 25 unidades do valor recebido;
            cont += 1; //No próximo laço, o valor recebido estará com menos 25 unidades, e no próximo laço -25...
        }
        else
        {
            if (moeda == 25) //Quando não der para subtrair por 25(que é a moeda máxima)
            {
                moeda = 10; //Então a variável moeda assumirá um valor abaixo, que é 10.
            }
            else if (moeda == 10) //Quando não for possível subtrair o total restante por 10;
            {
                moeda = 5; //Então a variável moeda passa a assumir o valor de 5.
            }
            else if (moeda == 5) // Não sendo possível subtrair cinco unidades do total restante;
            {
                moeda = 1; //A variável moeda passa assumir o valor de 1 e irá até finalizar o valor total.
            }
            else
            {
                break; //Por se tratar de um while(true), o break é necessário para sair do loop.
            }
        }
    }
    //Exibição do resultado, conforme solicitado
    printf("\n%d\n\n", cont);
}