Olá pessoal, eu estou com uma dúvida nesse código.
Na hora de executar ele apresenta alguns valores certos e roda corretamente, por exemplo, se eu digito 91.01 ele imprime os valores corretamente. Porém se eu digitar 0.11 ou 0.06 ele mostra faltando 1 centavo.
Alguém pode me ajudar a encontrar o erro? Já fiz de tudo, inclusive já sei da possibilidade de separar o valor das notas e moedas em 2 inteiros e trabalhar apenas com valores inteiros, porém quero saber como faço para dar o resultado correto trabalhando com double mesmo. Eis o código:
Pergunta
Dorns
Olá pessoal, eu estou com uma dúvida nesse código.
Na hora de executar ele apresenta alguns valores certos e roda corretamente, por exemplo, se eu digito 91.01 ele imprime os valores corretamente. Porém se eu digitar 0.11 ou 0.06 ele mostra faltando 1 centavo.
Alguém pode me ajudar a encontrar o erro? Já fiz de tudo, inclusive já sei da possibilidade de separar o valor das notas e moedas em 2 inteiros e trabalhar apenas com valores inteiros, porém quero saber como faço para dar o resultado correto trabalhando com double mesmo. Eis o código:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
double valor, resto;
int qtd_100, qtd_50, qtd_20, qtd_10, qtd_5, qtd_2;
int qtd_1, qtd_050, qtd_025, qtd_010, qtd_005, qtd_001;
scanf("%lf", &valor);
qtd_100 = valor / 100;
resto = fmod(valor, 100);
qtd_50 = abs(resto / 50);
resto = fmod(resto, 50);
qtd_20 = abs(resto / 20);
resto = fmod(resto, 20);
qtd_10 = abs(resto / 10);
resto = fmod(resto, 10);
qtd_5 = abs(resto / 5);
resto = fmod(resto, 5);
qtd_2 = abs(resto / 2);
resto = fmod(resto, 2);
printf("NOTAS:\n");
printf("%d nota(s) de R$ 100.00\n", qtd_100);
printf("%d nota(s) de R$ 50.00\n", qtd_50);
printf("%d nota(s) de R$ 20.00\n", qtd_20);
printf("%d nota(s) de R$ 10.00\n", qtd_10);
printf("%d nota(s) de R$ 5.00\n", qtd_5);
printf("%d nota(s) de R$ 2.00\n", qtd_2);
qtd_1 = abs(resto);
resto = fmod(resto, 1);
qtd_050 = abs(resto / 0.5);
resto = fmod(resto, 0.5);
qtd_025 = abs(resto / 0.25);
resto = fmod(resto, 0.25);
qtd_010 = abs(resto / 0.1);
resto = fmod(resto, 0.1);
qtd_005 = abs(resto / 0.05);
resto = fmod(resto, 0.05);
qtd_001 = abs(resto / 0.01);
printf("MOEDAS:\n");
printf("%d moeda(s) de 1.00\n", qtd_1);
printf("%d moeda(s) de 0.50\n", qtd_050);
printf("%d moeda(s) de 0.25\n", qtd_025);
printf("%d moeda(s) de 0.10\n", qtd_010);
printf("%d moeda(s) de 0.05\n", qtd_005);
printf("%d moeda(s) de 0.01\n", qtd_001);
return 0;
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.