Sou novato em programação. Meu professor pediu para eu resolver a seguinte situação:
"Construa um programa que implementa o módulo de saque de um caixa eletrônico. Todo caixa eletrônico deve possuir algum mecanismo para decidir o número de notas de cada valor que deve ser disponibilizado para o cliente que realizou o saque.
Um possível critério seria o da 'distribuição ótima' no sentido de que as notas de menor valor fossem distribuídas em uma quantidade mínima possível.
Por exemplo, se a quantia solicitada fosse R$ 87,00, o programa deveria indicar uma nota de R$ 50,00, uma nota de R$ 20,00, uma nota de R$ 10,00, uma nota de R$ 5,00 e uma nota de R$ 2,00.
Desenvolva um programa, que receba o valor da quantia solicitada e retorne a distribuição das notas de acordo com o critério da distribuição ótima.
Considere que o caixa eletrônico possua as seguintes cédulas: R$2,00, R$5,00, R$10,00, R$20,00, R$50,00 e R$100,00 e que a nossa solução deve implementar a distribuição ótima."
E eu fiz ele da seguinte forma em C:
#include <stdio.h>
int main (int argc, char** argv) {
int saque=0, nota2=0, nota5=0,
nota10=0, nota20=0, nota50=0, nota100=0;
printf ("Digite o valor de saque desejado em R$:\n");
scanf ("%d",&saque);
if (!(saque > 0)) {
printf("Valor do saque inoperante.\n");
return 0;
}
Quando eu vou fazer o teste com o valor de R$ 87,00, funciona legal. Meu problema é quando eu coloco um valor ímpar, por exemplo R$ 101,00. Neste caso ele só me retorna uma nota de 100 e 'engole' um real.
R$ 101,00 deveria retornar: 0 nota(s) de R$ 100,00;
1 nota(s) de R$ 50,00;
2 nota(s) de R$ 20,00;
1 nota(s) de R$ 5,00;
3 notas(s) de R$ 2,00.
Pois então, eu vejo o problema mas eu não tenho a maturidade o suficiente pra saber por onde eu começo pra chegar em tais resultados. Queria saber qual é o método que eu devo usar pra resolver. Obrigado!
Pergunta
Hellhammer
Olá pessoal,
Sou novato em programação. Meu professor pediu para eu resolver a seguinte situação:
"Construa um programa que implementa o módulo de saque de um caixa eletrônico. Todo caixa eletrônico deve possuir algum mecanismo para decidir o número de notas de cada valor que deve ser disponibilizado para o cliente que realizou o saque.
Um possível critério seria o da 'distribuição ótima' no sentido de que as notas de menor valor fossem distribuídas em uma quantidade mínima possível.
Por exemplo, se a quantia solicitada fosse R$ 87,00, o programa deveria indicar uma nota de R$ 50,00, uma nota de R$ 20,00, uma nota de R$ 10,00, uma nota de R$ 5,00 e uma nota de R$ 2,00.
Desenvolva um programa, que receba o valor da quantia solicitada e retorne a distribuição das notas de acordo com o critério da distribuição ótima.
Considere que o caixa eletrônico possua as seguintes cédulas: R$2,00, R$5,00, R$10,00, R$20,00, R$50,00 e R$100,00 e que a nossa solução deve implementar a distribuição ótima."
E eu fiz ele da seguinte forma em C:
#include <stdio.h>
int main (int argc, char** argv) {
int saque=0, nota2=0, nota5=0,
nota10=0, nota20=0, nota50=0, nota100=0;
printf ("Digite o valor de saque desejado em R$:\n");
scanf ("%d",&saque);
if (!(saque > 0)) {
printf("Valor do saque inoperante.\n");
return 0;
}
while (saque >= 100) {
saque = saque - 100;
nota100++;
}
while (saque >= 50) {
saque = saque - 50;
nota50++;
}
while (saque >= 20) {
saque = saque - 20;
nota20++;
}
while (saque >= 10) {
saque = saque - 10;
nota10++;
}
while (saque >= 5) {
saque = saque - 5;
nota5++;
}
while (saque >= 2) {
saque = saque - 2;
nota2++;
}
printf ("Temos:\n");
printf ("%d nota(s) de R$ 100,00;\n",nota100);
printf ("%d nota(s) de R$ 50,00;\n",nota50);
printf ("%d nota(s) de R$ 20,00;\n",nota20);
printf ("%d nota(s) de R$ 10,00;\n",nota10);
printf ("%d nota(s) de R$ 5,00;\n",nota5);
printf ("%d nota(s) de R$ 2,00.\n",nota2);
return 0;
}
Quando eu vou fazer o teste com o valor de R$ 87,00, funciona legal. Meu problema é quando eu coloco um valor ímpar, por exemplo R$ 101,00. Neste caso ele só me retorna uma nota de 100 e 'engole' um real.
R$ 101,00 deveria retornar:
0 nota(s) de R$ 100,00;
1 nota(s) de R$ 50,00;
2 nota(s) de R$ 20,00;
1 nota(s) de R$ 5,00;
3 notas(s) de R$ 2,00.
Pois então, eu vejo o problema mas eu não tenho a maturidade o suficiente pra saber por onde eu começo pra chegar em tais resultados. Queria saber qual é o método que eu devo usar pra resolver. Obrigado!
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.