Ir ao conteúdo
  • Cadastre-se

VisualG VisuALG - Algoritmo de troco


Posts recomendados

Alguém poderia me ajudar nesse algoritmo?

O algoritmo deve receber um valor que representa um troco e retorna a forma de dar esse troco utilizando o menor número possível de notas e moedas (Moedas e notas atuais em reais).

 

 

Atualmente existem notas de cem reais, cinquenta reais, vinte reais, dez reais, cinco reais e dois reais. Além disso existem as moedas de um real, cinquenta centavos, vinte e cinco centavos, dez centavos, cinco centavos e um centavo.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Em 06/12/2019 às 14:07, Simon Viegas disse:

@Victor_Toledo, sim! podemos ajudar.

 

Por favor, poste o que já conseguiu fazer e em qual parte está com dúvidas.

 
adicionado 1 minuto depois

@Simon Viegas O algoritmo está entregando o troco, mas não mostra as notas/moedas.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Em vez de:

7 horas atrás, Victor_Toledo disse:

se (valor_compra > valor_pago) entao

 

Seria:

se (valor_pago > valor_compra) entao

 

ADENDO 1: quando o "valor da compra" é maior que o "valor pago", seria necessário receber o restante!

 

ADENDO 2: as estruturas de seleções que verificam se precisaram de determinadas notas ou moedas devem ficar dentro do da estrutura de seleção que verifica se o valor pago é maior que o valor da compra, ou seja: quando não tem troco, não tem porquê verificar notas e moedas.

 

ADENDO 3: sobre o adendo 1 e 2, o enunciado não pede valor da compra. Vide:

 

Em 05/12/2019 às 17:12, Victor_Toledo disse:

O algoritmo deve receber um valor que representa um troco e retorna a forma de dar esse troco utilizando o menor número possível de notas e moedas (Moedas e notas atuais em reais).

 

 

Atualmente existem notas de cem reais, cinquenta reais, vinte reais, dez reais, cinco reais e dois reais. Além disso existem as moedas de um real, cinquenta centavos, vinte e cinco centavos, dez centavos, cinco centavos e um centavo.

 

Ou seja: você simplesmente deveria perguntar algo como "qual o valor do troco?", e retornar quais cédulas e moedas devem ser entregues.

 

DICA: procure sempre focar no problema. Nada a mais, nada a menos. Este é o segredo da busca por uma solução.

DICA 2: daí, caso tenha interesse, fazer OUTRO programa com características extras/diferentes do que foi pedido, ou seja: entrega "uma solução para o problema proposto original" (recebe o valor do troco e retorna as notas e moedas correspondentes) e "mostra outra solução para um problema relacionado" (que vai além do solicitado). A depender, pergunta se é permitido extrapolar o enunciado... mas veja: por definição, tente sempre fazer especificamente o que foi pedido.

 

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...
Em 11/12/2019 às 16:04, Simon Viegas disse:

@Victor_Toledo, por favor, posta o código para analisarmos e também poder servi de referência para outros visitantes.

 

No aguardo.

algoritmo "menor troco"
// Função : De o troco com o menor número de notas e moedas possíveis.
// Autor : Victor Toledo
// Seção de Declarações
var
   p100, p50, p20, p10, p5, p2: inteiro
   coin1, coin5, coin10, coin25, coin20, coin50, coin1real: inteiro
   troco, conversao: real
   val, val2: inteiro
inicio
   // Seção de Comandos
   escreval ("Qual o valor do troco?")
   leia (troco)
   val <- int(troco)
   conversao <- troco-val
   conversao <- conversao*100
   val2 <- int(conversao)
   Escreval ("Aqui está o seu troco: ", troco)
   p100 <- (val div 100)
   val <- (val mod 100)
   p50 <- (val div 50)
   val <- (val mod 50)
   p20 <- (val div 20)
   val <- (val mod 20)
   p10 <- (val div 10)
   val <- (val mod 10)
   p5 <- (val div 5)
   val <- (val mod 5)
   p2 <- (val div 2)
   val <- (val mod 2)
   coin1real <- (val div 1)
   val <- (val mod 1)
   se p100> 0 entao
      escreval (p100, " Notas (s) de 100 reais")
   fimse
   se p50> 0 entao
      escreval (p50, " Nota(s) de 50 reais")
   fimse
   se p20> 0 entao
      escreval (p20, " Nota(s) de 20 reais")
   fimse
   se p10> 0 entao
      escreval (p10, " Nota(s) de 10 reais")
   fimse
   se p5> 0 entao
      escreval (p5, " Nota(s) de 5 reais")
   fimse
   se p2> 0 entao
      escreval (p2, " Nota(s) de 2 reais")
   fimse
   se coin1real> 0 entao
      escreval (coin1real, " Moeda(s) de 1 real")
   fimse

   coin50 <- (val2 div 50)
   val2 <- (val2 mod 50)
   coin25 <- (val2 div 25)
   val2 <- (val2 mod 25)
   coin20 <- (val2 div 20)
   val2 <- (val2 mod 20)
   coin10 <- (val2 div 10)
   val2 <- (val2 mod 10)
   coin5 <- (val2 div 5)
   val2 <- (val2 mod 5)
   coin1 <- (val2 div 1)
   val2 <- (val2 mod 1)
   se coin50> 0 entao
      escreval (coin50, " Moeda(s) de 50 centavos")
   fimse
   se coin25> 0 entao
      escreval (coin25, " Moeda(s) de 25 centavos")
   fimse
   se coin20> 0 entao
      escreval (coin20, " Moeda(s) de 20 centavos")
   fimse
   se coin10> 0 entao
      escreval (coin10, " Moeda(s) de 10 centavos")
   fimse
   se coin5> 0 entao
      escreval (coin5, " Moeda(s) de 5 centavos")
   fimse
   se coin1> 0 entao
      escreval (coin1, " Moeda(s) de 1 centavo")
   fimse

fimalgoritmo

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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...