Meu código não faz a contagem desejada

1. Meu código não faz a contagem desejada

Gabriel Coelho
Huryer

(usa XUbuntu)

Enviado em 06/10/2016 - 14:19h

Ei galera, este é meu primeiro tópico aqui, então paciência!
Estava navegando há algumas horas e achei um problema de programação que me deu vontade de resolver... Em resumo, o problema pede que, dado um número "em ponto flutuante" digitado pelo usuário, sendo que este número representa um valor monetário, diga qual o valor mínimo de cédulas e moedas para somar aquela quantia. Os valores das cédulas foram dados (100, 50, 20, 10, 5 e 2) e das moedas também (1, 0.50, 0.25, 0.10, 0.05 e 0.01).
Até aí tudo bem, afinal pra mim a lógica do problema é fácil de ser interpretada e escrita em C. Só que, apesar de ler e re-ler meu código várias vezes, não consigo encontrar o erro. Em poucas palavras ele sempre deixa "uma moeda de 1 centavo" a menos na contagem. Exemplo: digitando o valor "0.19" ele me responde que são: 1 moeda de 0.10, 1 de 0.05 e ~3~ de 0.01, sendo que, na verdade seriam 4 moedas de 0.01. Abaixo o meu código:

#include <stdio.h>
#include <stdlib.h>

int main()
{
float VALORES[] = {100.00, 50.00, 20.00, 10.00, 5.00, 2.00, 1.00, 0.50, 0.25, 0.10, 0.05, 0.01};
float N;
int i = 0, cont = 0;
scanf("%f", &N);
while(i < 12)
{
while(N >= VALORES[i])
{
cont++;
N = N - VALORES[i];
}
if(i < 6)
{
if(i == 0)
printf("NOTAS:\n");
printf("%i nota(s) de R$ %.2f\n", cont, VALORES[i]);
}
if(i >= 6)
{
if(i == 6)
printf("MOEDAS:\n");
printf("%i moedas(s) de R$ %.2f\n", cont, VALORES[i]);
}
cont = 0;
i++;
}
return 0;
}

Alguém pode me ajudar a resolver isso?
Desde já agradeço a ajuda!!!


  


2. Re: Meu código não faz a contagem desejada

Perfil removido
removido

(usa Nenhuma)

Enviado em 06/10/2016 - 14:23h

Tem uma teoria em Matemática sobre partições.
Precisaria pôr os pensamentos em ordem para ver se é isto mesmo.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



3. Re: Meu código não faz a contagem desejada

Paulo
paulo1205

(usa Ubuntu)

Enviado em 06/10/2016 - 14:45h

Esse tópico volta e meia aparece por aqui. Veja minha resposta em outro tópico https://www.vivaolinux.com.br/topico/C-C++/Duvida-iniciante-3.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts