Ir para conteúdo
Fórum Script Brasil
  • 0

Problema em C - implementação de um módulo de saque de um caixa eletrônico.


Hellhammer

Pergunta

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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...