Um pequeno bug no meu código C curto. Por quê?
Não consigo entender por que isso funciona para 90% das entradas, mas não para as outras. O objetivo é dizer quantas moedas você receberia de volta. A maioria dos valores de teste funciona bem, mas se você inserir 4,20 (ou US $ 4,20), ele retorna 23 moedas ... deve ser 18 moedas (16 quartos e 2 moedas). Onde está o bug? Aqui está o meu código:
#include <stdio.h>
#include <cs50.h>
int main(void){
float change = 0.00;
printf("How much change is owed? ");
change = GetFloat();
float quarters = change/.25;
change-= (int)quarters*.25;
float dimes = change/.10;
change-= (int)dimes*.10;
float nickels = change/.05;
change-= (int)nickels*.05;
float pennies = (change+.005)/.01;
change-=(int)pennies*.01;
int total = (int)quarters+(int)dimes+(int)nickels+(int)pennies;
printf("%d\n", total);
return 0;
}