Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • 0
Carol Cavalcanti

saque bancário

Pergunta

Programa que recebe do usuário um valor de saque e as cédulas disponíveis no caixa eletrônico, retornando se o saque é possível com as cédulas disponíveis e quantas cédulas serão necessárias no total e especifica quantas cédulas de cada valor.

o que fiz até agora:

//Função inicial
    funcao inicio()
    {
        //Declaração de variáveis
        logico notaDeDois, notaDeCinco, notaDeDez, notaDeVinte, notaDeCinquenta, notaDeCem //Variáveis que guardam a informação
                                                                           //de verdadeiro ou falso para a
                                                                           //existência cada cédula no caixa
                                                                           //eletrônico
        inteiro quantidadeNotaDeDois, quantidadeNotaDeCinco, quantidadeNotaDeDez, quantidadeNotaDeVinte //Variáveis que guardam as
        inteiro quantidadeNotaDeCinquenta, quantidadeNotaDeCem //quantidades mínimas necessárias de cada uma das cédulas para o
                                                    //saque do valor informado pelo usuário
        inteiro quantidadeCedulas = 0 //Variável para uso do programa para a soma da quantidade mínima de cédulas pro saque
        inteiro valorDeSaque //Valor a ser sacado, informado pelo usuário
        inteiro controleDeResposta //Variável que guardao valor (1 ou 2) da resposta do usuário para a existência da cédula no
                              //caixa eletrônico para posterior conversão em uma variável lógica

        //Apresentação do programa
        escreva ("-- Caixa eletrônico --")
        escreva ("\nPrograma que informa as cédulas mínimas necessárias para um saque.\n")

        //Solicitações ao usuário
        escreva ("\n- Informe o valor do saque: ")
        leia (valorDeSaque)

        escreva ("- No caixa, há cédulas de R$ 2? (1- sim ou 2- não)\n")
        leia (controleDeResposta)
        se (controleDeResposta == 1){ //Conversão do controle de resposta (1 ou 2) em valor logico
            notaDeDois = verdadeiro
            } senao {
                notaDeDois = falso
                }
        escreva ("- No caixa, há cédulas de R$ 5? (1- sim ou 2- não)\n")
        leia (controleDeResposta)
        se (controleDeResposta == 1){ //Conversão do controle de resposta (1 ou 2) em valor logico
            notaDeCinco = verdadeiro
            } senao {
                notaDeCinco = falso
                }
        escreva ("- No caixa, há cédulas de R$ 10? (1- sim ou 2- não)\n")
        leia (controleDeResposta)
        se (controleDeResposta == 1){ //Conversão do controle de resposta (1 ou 2) em valor logico
            notaDeDez = verdadeiro
            } senao {
                notaDeDez = falso
                }        
        escreva ("- No caixa, há cédulas de R$ 20? (1- sim ou 2- não)\n")
        leia (controleDeResposta)
        se (controleDeResposta == 1){ //Conversão do controle de resposta (1 ou 2) em valor logico
            notaDeVinte = verdadeiro
            } senao {
                notaDeVinte = falso
                }    
        escreva ("- No caixa, há cédulas de R$ 50? (1- sim ou 2- não)\n")
        leia (controleDeResposta)
        se (controleDeResposta == 1){ //Conversão do controle de resposta (1 ou 2) em valor logico
            notaDeCinquenta = verdadeiro
            } senao {
                notaDeCinquenta = falso
                }    
        escreva ("- No caixa, há cédulas de R$ 100? (1- sim ou 2- não)\n")
        leia (controleDeResposta)
        se (controleDeResposta == 1){ //Conversão do controle de resposta (1 ou 2) em valor logico
            notaDeCem = verdadeiro
            } senao {
                notaDeCem = falso
                }


        //Realização das aferições
        //Cédulas de R$100
        se (notaDeCem == verdadeiro){ //Verifica se há cédulas de R$100 no caixa
            se (valorDeSaque/100>=1){ //Verifica se o valor de saque é superior a R$100
                quantidadeNotaDeCem = valorDeSaque/100 //Cálculo da quantidade de cédulas de R$100
                quantidadeCedulas = quantidadeCedulas + quantidadeNotaDeCem //Soma a quantidade de cédulas de R$100 a quantidade
                                                                //mínima necessária de de cédulas para o saque
                valorDeSaque = valorDeSaque - (quantidadeNotaDeCem*100) //Subtrai o valor que já será sacado só em notas de
                                                             //R$100 do valor total de saque
                } senao { //Caso haja cédulas de R$100 e o valor do saque seja inferior a R$100
                    quantidadeNotaDeCem = 0
                    }
                
            } senao { //Caso não haja cédulas de R$100
                quantidadeNotaDeCem = 0
                }
        //Cédulas de R$50
        se (notaDeCinquenta == verdadeiro){ //Verifica se há cédulas de R$50 no caixa
            se (valorDeSaque/50>=1){ //Verifica se o valor de saque é superior a R$50
                quantidadeNotaDeCinquenta = valorDeSaque/50 //Cálculo da quantidade de cédulas de R$50
                quantidadeCedulas = quantidadeCedulas + quantidadeNotaDeCinquenta //Soma a quantidade de cédulas de R$50 a
                                                                     //quantidade mínima necessária de de cédula
                                                                     //para o saque
                valorDeSaque = valorDeSaque - (quantidadeNotaDeCinquenta*50) //Subtrai o valor que já será sacado só em notas de
                                                                 //R$50 do valor total de saque
                } senao {
                    quantidadeNotaDeCinquenta = 0 //Caso haja cédulas de R$50 e o valor do saque seja inferior a R$50
                    }
            } senao {
                quantidadeNotaDeCinquenta = 0 //Caso não haja cédulas de R$100
                }
        //Cédulas de R$20
        se (notaDeVinte == verdadeiro){ //Verifica se há cédulas de R$20 no caixa
            se (valorDeSaque/20>=1){ //Verifica se o valor de saque é superior a R$20
                quantidadeNotaDeVinte = valorDeSaque/20 //Cálculo da quantidade de cédulas de R$20
                quantidadeCedulas = quantidadeCedulas + quantidadeNotaDeVinte //Soma a quantidade de cédulas de R$20 a
                                                                  //quantidade mínima necessária de de cédula para
                                                                  //o saque
                valorDeSaque = valorDeSaque - (quantidadeNotaDeVinte*20) //Subtrai o valor que já será sacado só em notas de R$20
                                                              //do valor total de saque
                } senao {
                    quantidadeNotaDeVinte = 0 //Caso haja cédulas de R$20 e o valor do saque seja inferior a R$20
                    }
            } senao {
                quantidadeNotaDeVinte = 0 //Caso não haja cédulas de R$20
                }        
        //Cédulas de R$10
        se (notaDeDez == verdadeiro){ //Verifica se há cédulas de R$10 no caixa
            se (valorDeSaque/10>=1){ //Verifica se o valor de saque é superior a R$10
                quantidadeNotaDeDez = valorDeSaque/10 //Cálculo da quantidade de cédulas de R$10
                quantidadeCedulas = quantidadeCedulas + quantidadeNotaDeDez //Soma a quantidade de cédulas de R$10 a quantidade
                                                                //mínima necessária de de cédula para o saque
                valorDeSaque = valorDeSaque - (quantidadeNotaDeDez*10) //Subtrai o valor que já será sacado só em notas de R$10
                                                            //do valor total de saque
                } senao {
                    quantidadeNotaDeDez = 0 //Caso haja cédulas de R$10 e o valor do saque seja inferior a R$10
                    }
            } senao {
                quantidadeNotaDeDez = 0 //Caso não haja cédulas de R$10
                }                            
        //Cédulas de R$5
        se (notaDeCinco == verdadeiro){ //Verifica se há cédulas de R$5 no caixa
            se (valorDeSaque/5>=1){  //Verifica se o valor de saque é superior a R$5
                quantidadeNotaDeCinco = valorDeSaque/5 //Cálculo da quantidade de cédulas de R$5
                quantidadeCedulas = quantidadeCedulas + quantidadeNotaDeCinco //Soma a quantidade de cédulas de R$5 a quantidade
                                                                  //mínima necessária de de cédula para o saque
                valorDeSaque = valorDeSaque - (quantidadeNotaDeCinco*5) //Subtrai o valor que já será sacado só em notas de R$5
                                                             //do valor total de saque
                } senao {
                    quantidadeNotaDeCinco = 0 //Caso haja cédulas de R$5 e o valor do saque seja inferior a R$5
                    }
            } senao {
                quantidadeNotaDeCinco = 0 //Caso não haja cédulas de R$5
                }    
        //Cédulas de R$2
        se (notaDeDois == verdadeiro){ //Verifica se há cédulas de R$2 no caixa
            se (valorDeSaque/2>=1){ //Verifica se o valor de saque é superior a R$2
                quantidadeNotaDeDois = valorDeSaque/2 //Cálculo da quantidade de cédulas de R$2
                quantidadeCedulas = quantidadeCedulas + quantidadeNotaDeDois  //Soma a quantidade de cédulas de R$2 a quantidade
                                                                  //mínima necessária de de cédula para o saque
                valorDeSaque = valorDeSaque - (quantidadeNotaDeDois*2) //Subtrai o valor que já será sacado só em notas de R$2
                                                             //do valor total de saque
                } senao {
                    quantidadeNotaDeDois = 0 //Caso haja cédulas de R$2 e o valor do saque seja inferior a R$2
                    }
            } senao {
                quantidadeNotaDeDois = 0 //Caso não haja cédulas de R$2
                }    

        //Exposição dos resultados
        se (valorDeSaque == 0){ //Verifica se todo o valor de saque pôde ser disposto nas cédulas disponíveis
            //Expõe a quantidade mínima de cédulas para a realização do saque
            escreva ("\n> A quantidade mínima de cédulas para a realização desse saque é ", quantidadeCedulas, ". Sendo elas:\n")
            //Exposição da quantidade mínima de cédulas de cada valor necessárias para a realização de saque
            se (quantidadeNotaDeCem > 0){ //Verifica se é necessária alguma cédula de R$100
                escreva (quantidadeNotaDeCem, " notas de R$100\n") //Expõe a quantidade de cédula de R$100, caso haja
                }
            se (quantidadeNotaDeCinquenta > 0){ //Verifica se é necessária alguma cédula de R$50
                escreva (quantidadeNotaDeCinquenta, " notas de R$50\n") //Expõe a quantidade de cédula de R$50, caso haja
                }
            se (quantidadeNotaDeVinte > 0){ //Verifica se é necessária alguma cédula de R$20
                escreva (quantidadeNotaDeVinte, " notas de R$20\n") //Expõe a quantidade de cédula de R$20, caso haja
                }    
            se (quantidadeNotaDeDez > 0){ //Verifica se é necessária alguma cédula de R$10
                escreva (quantidadeNotaDeDez, " notas de R$10\n") //Expõe a quantidade de cédula de R$10, caso haja
                }    
            se (quantidadeNotaDeCinco > 0){ //Verifica se é necessária alguma cédula de R$5
                escreva (quantidadeNotaDeCinco, " notas de R$5\n") //Expõe a quantidade de cédula de R$5, caso haja
                }                
            se (quantidadeNotaDeDois > 0){ //Verifica se é necessária alguma cédula de R$2
                escreva (quantidadeNotaDeDois, " notas de R$2\n") //Expõe a quantidade de cédula de R$2, caso haja
                }        
            
            } senao { //Caso, mesmo usando todos os valores de cédulas disponíveis, ainda reste um valor de saque que cuja
                    //realização não seja possível  pelo caixa eletrônico, emite uma mensagem de aviso.
                escreva ("\n> O saque não poderá ser realizado.")
                }
        
        
    }
}

 

 

o problema é no caso de um valor de saque como 13 que pode ser possível mas o programa diz que não é

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 respostas a esta questão

Recommended Posts

Como você está fazendo a lógica decrescente, e o valor de nota mais baixa é a de 2, você deve validar se o valor é múltiplo de 2 ou não (par ou ímpar). Se for par, sua lógica funciona sem problemas. Se for impar, você terá que mudar a lógica, para que utilize-se de notas uma nota de 5.

 

Como você precisa chegar a um número impar, existe apenas uma nota que faz com que o valor par se torne ímpar, que é 5. Pois:

 

  • par + par = par;
  • ímpar + ímpar = par;
  • ímpar + par = ímpar.

Logo, deve-se começar subtraindo a nota de 5.

 

Por exemplo: Digamos que o valor a ser sacado é 27.

O valor que você deve sacar é 27 - 5: pois, uma nota de 5 é obrigatória no seu cálculo. Assim:

  • 27 - 5 = 1
  • 22 / 20 = 1;
  • 2 / 2 = 1.

Logo:

  • 1 nota de R$ 5,00;
  • 1 nota de R$ 20,00
  • 1 nota de 2.

O mesmo vale para o 13:

  • 13 - 5 = 1 nota de R$ 5,00 (nota inicial);
  • 7 / 5 = 1 nota de R$ 5,00;
  • 2 / 2 = 1 nota de R$ 2,00;

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por janainacarrier@gmail.com
      A manutenção dos ares condicionados no hotel são realizadas por empresas terceirizadas que, em alguns casos, oferecem desconto quando o serviço é realizado em uma quantidade determinada de aparelhos. A partir desse contexto:
      a. Crieumafunçãoouprocedimentoquerecebaonomedaempresa, o valor do serviço por aparelho, a quantidade de aparelhos em manutenção, o percentual de desconto (que pode ser zero) e a quantidade mínima de aparelhos para que o desconto seja dado.
      b. Calculenessafunção/procedimentoovalortotaldoserviçoapartir do valor por aparelho e da quantidade de aparelhos. Aplique sobre esse valor o desconto, caso a quantidade de aparelhos seja maior que a mínima informada para que haja desconto. Ao fim mostre a mensagem “O serviço de [nome da empresa] custará R$ [total calculado]”.
      c. Concluída a função ou procedimento, monte um algoritmo que permita que o usuário informe várias empresas e os outros dados necessários para o cálculo, usando a função/procedimento para mostrar o total orçado de cada empresa. Termine o algoritmo quando o usuário responder ‘N’ à mensagem “Deseja informar novos dados? (S/N)”.
    • Por janainacarrier@gmail.com
      A manutenção dos ares condicionados no hotel são realizadas por empresas terceirizadas que, em alguns casos, oferecem desconto quando o serviço é realizado em uma quantidade determinada de aparelhos. A partir desse contexto:
      a. Crieumafunçãoouprocedimentoquerecebaonomedaempresa, o valor do serviço por aparelho, a quantidade de aparelhos em manutenção, o percentual de desconto (que pode ser zero) e a quantidade mínima de aparelhos para que o desconto seja dado.
      b. Calculenessafunção/procedimentoovalortotaldoserviçoapartir do valor por aparelho e da quantidade de aparelhos. Aplique sobre esse valor o desconto, caso a quantidade de aparelhos seja maior que a mínima informada para que haja desconto. Ao fim mostre a mensagem “O serviço de [nome da empresa] custará R$ [total calculado]”.
      c. Concluída a função ou procedimento, monte um algoritmo que permita que o usuário informe várias empresas e os outros dados necessários para o cálculo, usando a função/procedimento para mostrar o total orçado de cada empresa. Termine o algoritmo quando o usuário responder ‘N’ à mensagem “Deseja informar novos dados? (S/N)”.
    • Por janainacarrier@gmail.com
      1
      Considerando que o hotel tenha 20 quartos, desenvolva um algoritmo para marcar a ocupação de cada quarto. No início todos os quartos estão livres. O usuário informará então o número do quarto (de 1 a 20); o sistema questionará “O quarto está livre ou ocupado? (L/O)”; o usuário informará L ou O e o sistema registrará essa escolha para o quarto. Caso o usuário informe “O”, mas o quarto já está marcado como ocupado, mostre na tela “Quarto já está ocupado”. Pergunte ao usuário se ele deseja continuar e caso positivo, repita a operação. Ao fim, mostre o status de cada quarto.
       
      2
      Escreva um algoritmo que receba os nomes e sexos de 5 hóspedes. Depois disso, mostre, separadamente, primeiro todos os nomes dos hóspedes do sexo feminino e depois todos os nomes das hóspedes do sexo masculino.
       
      em Portugol 
       
      3
      Monte um algoritmo em que o usuário poderá cadastrar e pesquisar hóspedes. O algoritmo deve oferecer um menu com três opções ao usuário: 1- cadastrar; 2- pesquisar; 3- sair. A opção “cadastrar” deve permitir que o usuário informe um nome de hóspede, gravando-o em memória (máximo de 15 cadastros; caso atinja essa quantidade, mostre “Máximo de cadastros atingido”). A opção “pesquisar” deve permitir que o usuário informe um nome e, caso seja encontrado um nome exatamente igual, mostre a mensagem “Hospede (nome) foi encontrado no índice (índice onde foi cadastrado)”. Se o nome não foi encontrado mostre “Hóspede não encontrado”. O algoritmo deve permitir que o usuário realize essas operações repetidas vezes, até que use a opção “3”, que encerra o algoritmo.
    • Por janainacarrier@gmail.com
      1
      Considerando que o hotel tenha 20 quartos, desenvolva um algoritmo para marcar a ocupação de cada quarto. No início todos os quartos estão livres. O usuário informará então o número do quarto (de 1 a 20); o sistema questionará “O quarto está livre ou ocupado? (L/O)”; o usuário informará L ou O e o sistema registrará essa escolha para o quarto. Caso o usuário informe “O”, mas o quarto já está marcado como ocupado, mostre na tela “Quarto já está ocupado”. Pergunte ao usuário se ele deseja continuar e caso positivo, repita a operação. Ao fim, mostre o status de cada quarto.
       
      2
      Escreva um algoritmo que receba os nomes e sexos de 5 hóspedes. Depois disso, mostre, separadamente, primeiro todos os nomes dos hóspedes do sexo feminino e depois todos os nomes das hóspedes do sexo masculino.
       
      em Portugol 
       
      3
      Monte um algoritmo em que o usuário poderá cadastrar e pesquisar hóspedes. O algoritmo deve oferecer um menu com três opções ao usuário: 1- cadastrar; 2- pesquisar; 3- sair. A opção “cadastrar” deve permitir que o usuário informe um nome de hóspede, gravando-o em memória (máximo de 15 cadastros; caso atinja essa quantidade, mostre “Máximo de cadastros atingido”). A opção “pesquisar” deve permitir que o usuário informe um nome e, caso seja encontrado um nome exatamente igual, mostre a mensagem “Hospede (nome) foi encontrado no índice (índice onde foi cadastrado)”. Se o nome não foi encontrado mostre “Hóspede não encontrado”. O algoritmo deve permitir que o usuário realize essas operações repetidas vezes, até que use a opção “3”, que encerra o algoritmo.
    • Por Dcdbbvb
      Faça um código que deverá ter uma matriz de qualquer tamanho(Você define o tamanho) no qual o usuário irá digitar os números que serão armazenados na matriz. Construa uma função que deverá somar todos os números digitados. No final o programa mostrará a matriz e o valor total da somatória.
       
      por favorrrr alguém me ajuda
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.