Ir para conteúdo
  • 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 é

Editado por Gabriel Heming
adicionar marcação de código

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 respostas a esta questão

Recommended Posts

  • 0

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

Crie uma conta ou entre para comentar

Você precisar ser um membro 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

  • Conteúdo Similar

    • Por guiilhermej
      Galera, to com um impasse em umas questões passadas na faculdade, eu realmente gosto de resolver meus exercícios, pois só assim sei que irei aprender, mas acontece que to meio perdido nessas questões, alguem me da um help por favor.

       
      6. Escreva um algoritmo que peça um número n ao usuário, e que gere um novo n de acordo
      com a seguinte regra:
      • se n é par, n = n / 2
      • se n é impar, n = 3 * n + 1
      • imprime n
      • O programa deve parar quando x tiver o valor igual a 1. Por exemplo, para n = 13, a saída
      será:
      40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1

      7. Fazer um algoritmo que leia um número que servira para controlar os primeiros números
      ímpares. Deverá ser impressa a soma desses números. Suponha que o número informado será
      maior que zero, caso não seja, informar o erro.
      Informe um número: 5
      1 3 5 7 9
      A soma dos 5 valores impares é: 25

      8. Fazer um algoritmo que leia os limites inferior e superior de um intervalo e o número cujos
      múltiplos se deseja que sejam impressos no intervalo aberto. Suponha que os dados digitados
      são para um intervalo crescente. Exemplo:
      Valor inicial: 5
      Valor final: 15
      Divisor: 3
      6 9 12 15
       
      9. Fazer um algoritmo que leia a quantidade de números que se deseja digitar para que
      possa ser impresso o maior e o menor número digitado. Não suponha que todos os
      números lidos serão positivos. Exemplo:
      Quantos números deseja digitar?
      5
      Informe um numero:3
      Informe um numero:-2
      Informe um numero:5
      Informe um numero:6
      Informe um numero:19
      O maior numero informado foi: 19
      O menor numero informado foi: -2
    • Por Felipe Cunha
      Boa tarde galera, sei que não é muito comum problemas com essa linguagem porem estou no começo e preciso muito da ajuda de vocês, preciso desenvolver um programa que estou desde ontem tentando desenvolver e não consigo achar uma solução,a linguagem é portugol estou começando no mundo de programação mais estou com muita dificuldade em solucionar esse algorítimo:
       
      Solicite para o usuário nome e sexo de pessoas, ao final da entrada desses dados pergunte para o usuário se o mesmo deseja digitar mais pessoas, se sim solicite novamente os dados, se não, encerre o programa e exiba a quantidade de pessoas que foram digitadas, o total de pessoas do sexo masculino, o total do sexo feminino, o total de sexo inválido e a porcentagem de cada um.
       
      Alguém poderia me ajudar por favor
    • Por Maroto
      Olá, pessoas.
       
      Criei um programa com fins de estudo no visualg, cuja finalidade é preencher uma matriz com valores aleatórios e, em seguida, conferir e armazenar numa segunda atriz se o valores gerados são pares ou ímpares. Todavia o programa fica dando um erro ("Access violation at address xxxx in module" visualg30.exe). Não sei se eu que estou errando na lógica, se meu pc está quebrado ou se é um bug do visualg. 

      Abaixo deixo meu código para quem puder me ajudar. Obrigado :)
       
      Var // Seção de Declarações das variáveis matriz1: vetor [0..2, 0..2] de inteiro matriz2: vetor [0..2, 0..2] de caractere // Procedimento que gera valores inteiros aleatorios para preencher a matriz1. procedimento preencheMatriz var // Variaveis contadoras i1, i2: inteiro inicio para i1 de 0 ate 1 passo 1 faca para i2 de 0 ate 2 passo 1 faca aleatorio on leia (matriz1[i1,i2]) limpatela aleatorio off fimpara fimpara // Imprimindo a matriz na tela para i1 de 0 ate 1 passo 1 faca para i2 de 0 ate 2 passo 1 faca escreva (matriz1[i1,i2]) fimpara escreval ("") fimpara fimprocedimento // Procedimento que verifica se os valores das posições da matriz1 são pares // ou ímpares. procedimento verificaParImpar var i1, i2: inteiro inicio para i1 de 0 ate 1 passo 1 faca para i2 de 0 ate 2 passo 1 faca se (matriz1[i1, i2] MOD 2=0) entao matriz2[i1,i2] <- "par" escreva(matriz2[i1,i2], " ") senao matriz2[i1,i2] <- "ímpar" escreva(matriz2[i1,i2], " ") fimse fimpara escreval(" ") fimpara fimprocedimento Inicio // Seção de Comandos, procedimento, funções, operadores, etc... preencheMatriz verificaParImpar Fimalgoritmo  
    • Por PedroCaampos
      Alguém sabe como resolver resolver esse exercício?  Sou novo nessa área da programação e estou quebrando a minha cabeça para fazer. Se vocês pelo menos me der um base irei agradecer.
       
      Miguel é responsável pelas contas de uma grande empresa da área de mineração em Minas Gerais. Ele deseja pagar a seus funcionários um bom salário, mas se preocupa com as épocas de crise. Dessa forma, ele paga um salário fixo, condizente com a função do funcionário e paga a eles um valor adicional a título de participação de lucros. Ele deseja que você crie um programa que calcule quanto um funcionário específico receberá em um mês, tendo em vista a sua função e o quanto a empresa lucrou percentualmente em relação à expectativa. Os salários seguem a tabela:
      Nível Salário
      Ausente R$1600,00
      Técnico R$2800,00
      Analista R$3500,00
      Especialista R$4000,00
       
      ENUNCIADO
      Ainda, o salário é acrescido do percentual que excedeu as expectativas de lucro da empresa. Lembrando que se o percentual for inferior a 100% o empregado não pode receber menos do que o salário. Enunciado Agora, que Miguel já consegue saber o quanto um funcionário recebe em um mês, ele deseja saber o quanto ele deverá pagar para todos os seus funcionários. Agora, para cada funcionário ele pagará uma bonificação (percentual) sobre seu salário relacionada a seu desempenho individual, além da participação dos lucros. Ele então deseja que você crie um programa que, recebendo as informações suficientes para o cálculo do pagamento de cada funcionário, informe o valor de pagamento total.
       
      Questões
       
      1. Identifique a entrada, saída e processamento para este problema.
      2. Descreva textualmente os passos do algoritmo.
      3. Identifique quais serão as variáveis e constantes utilizadas no algoritmo, com seus tipos respectivos.
      4. Descreva as funções matemáticas que geram as saídas do algoritmo.
      5. Para o algoritmo desenvolvido por você (não programado ainda!), identifique os laços e desvios de fluxo.
      6. Escreva um código em Portugol que represente o algoritmo que resolve o problema de Miguel.
    • Por Ddragon 345
      Uma escola deseja saber algumas informações estatísticas referente a uma sala de aula com 20 alunos. Para isso, fora elaborado um questionário contendo as seguintes perguntas:
      - Nome do aluno
      - Data de nascimento (DD/MM/AAAA)
      - Sexo (F/M/O)
      - Signo
      - Altura
      Apresentar no final as seguintes informações:
      a) Percentual de alunos do sexo F
      b) média de idade dos alunos
      c) nome e peso da pessoa mais pesada do sexo M
      d) quantidade de pessoas do signo de aries abaixo de 1,80m de altura
      e) nome e altura da pessoa mais baixa
      f) média aritmética de peso de todos os alunos entrevistados
      g) percentual de pessoas que nasceram em ano BISSEXTO
      h) quantidade de pessoas que nasceram em dias PRIMO
      J) quantidade de alunos por signo
       
      Alguém me ajuda a explicar sobre parte que esta grifado  
       
      Segue a imagem abaixo da onde eu parei 
       
       
      código
        var
      NA,DDMMAAAA,S,Sig:CARACTERE inicio
      Escreval("Digite o nome aluno")
      leia(NA)
      Escreval("Digite data de nascimento")
      leia(DDMMAAAA)
      Repita
         Escreval("Digite o seu sexo")
         leia(S)
         SE (S<>"F") e (S<>"M") e (S<>"O") entao
            Escreval("sexo invalido")
         fimse
      ATE (S="F") ou (S="M") ou (S="0")
      Repita
         Escreval("Digite o seu signo")
         leia(Sig)
         SE (Sig<>"aries") e (Sig<>"touro") e (Sig<>"Gemeos") e (Sig<>"Cancer") e (Sig<>"Leao") e (Sig<>"Virgem") e (Sig<>"Libra") e (Sig<>"Escorpiao") e (Sig<>"Sagitario") e (Sig<>"Capricornio") e (Sig<>"Aquario") e (Sig<>"Peixes") entao
            Escreval("signo invalido")
         fimse
      ATE   (Sig="aries") ou (Sig="touro") ou (Sig="Gemeos") ou (Sig="Cancer") ou (Sig="Leao") ou (Sig="Virgem") ou (Sig="Libra") ou (Sig="Escorpiao") ou (Sig="Sagitario") ou (Sig="Capricornio") ou (Sig="Aquario") ou (Sig="Peixes")
            Escreval("Digite a sua altura")
            leia(alt)
            Escreval("Digite o seu peso")
            leia(p)             fimalgoritmo  
       
       
       
       
       
       


×

Informação importante

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