Ir ao conteúdo

Posts recomendados

Postado

Estou tentando resolver o seguinte problema:

Leia um valor de ponto flutuante com duas casas decimais. Este valor representa um valor monetário. A seguir, calcule o menor número de notas e moedas possíveis no qual o valor pode ser decomposto. As notas consideradas são de 100, 50, 20, 10, 5, 2. As moedas possíveis são de 1, 0.50, 0.25, 0.10, 0.05 e 0.01. A seguir mostre a relação de notas necessárias.

Tentei resolver o problema, mas achei que o meu código ficou bem esquisito, e, além disso, não funcionou como deveria. O programa leva uns 4 segundos para gerar a saída, e ainda gera uma saída incorreta.

Alguém poderia me dizer o que está errado aí?



int main(void)
{
int reais, centavos, cont_100, cont_50, cont_20, cont_10, cont_5, cont_2,
cont_1, cont_50_cent, cont_25_cent, cont_10_cent, cont_5_cent, cont_1_cent;
float entrada;

scanf("%f", &entrada);

reais = (int) entrada;
centavos = (int) ((entrada - reais)*100);

// zerando os contadores
cont_100 = cont_50 = cont_20 = cont_10 = cont_5 = cont_2 = cont_1 =
cont_50_cent = cont_25_cent = cont_10_cent = cont_5_cent = cont_1_cent = 0;

// processamento da parte inteira
while (reais/100)
{
reais -= 100;
cont_100++;
}
while (reais/50)
{
reais -= 50;
cont_50++;
}
while (reais/20)
{
reais -= 20;
cont_20++;
}
while (reais/10)
{
reais -= 10;
cont_10++;
}
while (reais/5)
{
reais -= 5;
cont_5++;
}
while (reais/2)
{
reais -= 2;
cont_2++;
}
if (reais)
{
cont_1++;
}

// processamento da parte fracionária (centavos)
while (centavos/50)
{
centavos -= 50;
cont_50_cent++;
}
while (centavos/25)
{
centavos -= 25;
cont_25_cent++;
}
while (centavos/10)
{
centavos -= 10;
cont_10_cent++;
}
while (centavos/5);
{
centavos -= 5;
cont_5_cent++;
}
while (centavos)
{
centavos--;
cont_1_cent++;
}


// saída
puts("NOTAS:");
printf("%d nota(s) de R$ 100.00\n", cont_100);
printf("%d nota(s) de R$ 50.00\n", cont_50);
printf("%d nota(s) de R$ 20.00\n", cont_20);
printf("%d nota(s) de R$ 10.00\n", cont_10);
printf("%d nota(s) de R$ 5.00\n", cont_5);
printf("%d nota(s) de R$ 2.00\n", cont_2);
puts("MOEDAS:");
printf("%d moeda(s) de R$ 1.00\n", cont_1);
printf("%d moeda(s) de R$ 0.50\n", cont_50_cent);
printf("%d moeda(s) de R$ 0.25\n", cont_25_cent);
printf("%d moeda(s) de R$ 0.10\n", cont_10_cent);
printf("%d moeda(s) de R$ 0.05\n", cont_5_cent);
printf("%d moeda(s) de R$ 0.01\n", cont_1_cent);

return 0;
}
#include <stdio.h>

Postado

te da uma dica. creio que vá mata a sua dúvida

os contadores estão OK, tem que te 1 contador para cada nota/moeda

ja agora

pegue a variavel que vai receber o valor.

divide por 100

Atenção agora!

50,20,10,5,2,1...

divida pelo RESTO % o resultado desse resto é o numero de nota/moeda que pode ter.

exemplo


notas_100 = valor/100;
notas_50 = valor/100%50;
notas_20 = valor/100%50%20;

creio que assim vá dar o resultado certo.

  • 8 anos depois...
Postado

@Visitante Construa um programa que determine o menor número de notas e de moedas a devolver, de troco, para uma compra que pode ir até 50 KZ. Assuma que paga sempre com uma nota dessa importância e que as notas disponíveis para efetuar o troco são de 20, 10 e 5 50 KZ e as moedas de 2 e 1 50 KZ e de 50, 20, 10 e 5 cêntimos.

 

 

podes me ajudar?

Construa um programa que determine o menor número de notas e de moedas a devolver, de troco, para uma compra que pode ir até 50 KZ. Assuma que paga sempre com uma nota dessa importância e que as notas disponíveis para efetuar o troco são de 20, 10 e 5 50 KZ e as moedas de 2 e 1 50 KZ e de 50, 20, 10 e 5 cêntimos.

 

 

podem me ajudar a resolver em Linguagem C

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!