1021 - Notas e Moedas

Um problema bastante parecido com o 1018 - Cédulas, mas com algumas coisas a mais.

Descrição

Solução

Para entender o raciocínio para resolver este problema, consulte 1018 - Cédulas.

Entretanto, temos alguns detalhes aqui: é um pouco problemático obter o resto da divisão para números não inteiros. Por isso, eu decidi que seria uma boa multiplicar por 100 todos os valores envolvidos para me certificar de que só faria manipulação com números inteiros. Também simplifiquei o código para evitar repetições, fazendo com que na hora de imprimir os valores, também seja necessário dividir por 100.

#include <stdio.h>

int main(){
    int notas[] = {10000, 5000, 2000, 1000, 500, 200};
    int moedas[] = {100, 50, 25, 10, 5, 1};
    int reais, centavos;

    scanf("%d.%d", &reais, &centavos);
    reais = 100 * reais + centavos;

    printf("NOTAS:\n");
    for(int i = 0; i < 6; ++i){
        printf("%d nota(s) de R$ %.2lf\n", reais/notas[i], notas[i]/100.0);
        reais %= notas[i];
    }

    printf("MOEDAS:\n");
    for(int i = 0; i < 6; ++i){
        printf("%d moeda(s) de R$ %.2lf\n", reais/moedas[i], moedas[i]/100.0);
        reais %= moedas[i];
    }

    return 0;
}

Last updated