Ir ao conteúdo

Posts recomendados

Postado

Bom dia pessoal, eu tenho q fazer um trabalho pra faculdade criando um menu de lanchonete no visualG, ja fiz tudo aq certinho, e ta funcionando, mas tem 1 problema: quando eu escolho uma opção que não existe (tipo digitar 8, e só tem 7 opções), ele ainda me pergunta a quantidade do produto, eu precisava fazer ele reconhecer que não existe e avisar pro usuário "não temos essa opção no cardápio" ou algo do tipo. Vcs conseguem me ajudar?

 

Algoritmo ".ex.lanchonete"
var

  opc, oplanch, opbebida     : inteiro
  opacompanhamento, qtd      : inteiro
  vltotal, vllanch           : real
  vlbebida, vlacompanhamento : real
  lancheS, beBidAs           : real
  aCompAnhamentos, toTal     : real
Inicio
   Repita
     // inicializar essas variAveis, Senao dA erro
     vllanch  := 0
     vlbebida := 0         // esSe siMbolo ":="
     vlacompanhamento := 0 // Eh iguaL a eSSe "<-"

      Escreval ("  ====== MENU ======")
      Escreval (" 1 Lanche           ")
      Escreval (" 2 Bebidas          ")
      Escreval (" 3 Acopanhamentos   ")
      Escreval (" 0 finalizar pedido ")
      Escreva  (" Faça Seu pedido,   ")
      escreval (" escolha uma opção  ")
      Leia (opc)
      escolha opc

      caso 1
         Repita
            Escreval ("  ======  LANCHES  ======")
            Escreval (" 1 X-burger --------> R$ 14,00")
            Escreval (" 2 X-Salada --------> R$ 18,00")
            Escreval (" 3 X-Bacon  --------> R$ 20.00")
            Escreval (" 4 X-Egg --------> R$ 22.00")
            Escreval (" 5 X-Onion --------> R$ 24.00")
            Escreval (" 6 X-Tudo --------> R$ 28.00")
            Escreval (" 7 X-Infarto --------> R$ 35.00")
            Escreval (" 0 Voltar ao menu anterior "  )
            Escreval (" Escolha uma opção de lanche "  )
            leia(oplanch)

            Se oplanch = 0 então
               interrompa
            Fimse

            Escreval ("Informe a quantidade")
            Leia (qtd)

            Se oplanch = 1 então
               vllanch <- vllanch + 10 * qtd
            Senao
               Se oplanch = 2 então
                  vllanch <- vllanch + 12 * qtd
               Senao
                  Se oplanch = 3 então
                     vllanch <- vllanch + 14 * qtd
                  Senao
                     Se oplanch = 4 então
                        vllanch <- vllanch + 18 * qtd
                     Senao
                        Se oplanch = 5 então
                           vllanch <- vllanch + 10 * qtd
                        Senao
                           Se oplanch = 6 então
                              vllanch <- vllanch + 9 * qtd
                           Senao
                              Se oplanch = 7 então
                                 vllanch <- vllanch + 16 * qtd
                              Fimse
                           Fimse
                        Fimse
                     Fimse
                  Fimse
               Fimse
            Fimse
         Ate oplanch = 0
         Escreval("...................................")
         Escreval("")
         Escreval("valor Do Pedido = R$", vllanch,",00")
         Escreval("...................................")
        lanches := lanches + vllanch
        Timer 3000
        Timer 0
      caso 2
         Repita
            Escreval ("  ====== BEBIDAS======================")
            Escreval (" 1 Refrigerante ------------> R$  6,00")
            Escreval (" 2 Suco Natural ------------> R$  10,00")
            Escreval (" 3 Suco Prats ---------> R$  8,00")
            Escreval (" 4 Agua --------------------> R$  3,50")
            Escreval (" 5 Cerveja --------> R$  8,00")
            Escreval (" 6 Energético -------------> R$  12.00")
            Escreval (" 7 Milk Shake --------------> R$ 15,00")
            Escreval (" 0 Voltar ao menu anterior "           )
            Escreval (" Escolha uma opção de bebida "         )
            leia   ( opbebida)

            Se opbebida = 0 então
               interrompa
            Fimse

            Escreval (" Informe a Quantidade ")
            leia     ( qtd )

            Se opbebida = 1 então
               vlbebida <- vlbebida + 5 * qtd
            Senao
               Se opbebida = 2 então
                  vlbebida <- vlbebida + 4 * qtd
               Senao
                  Se opbebida = 3 então
                     vlbebida <- vlbebida + 2 * qtd
                  Senao
                     Se opbebida = 4 então
                        vlbebida <- vlbebida + 3 * qtd
                     Senao
                        Se opbebida = 5 então
                           vlbebida <- vlbebida + 5 * qtd
                        Senao
                           Se opbebida = 6  então
                              vlbebida <- vlbebida + 9 * qtd
                           Senao
                              Se opbebida = 7 então
                                 vlbebida <- vlbebida + 12 * qtd
                              Fimse
                           Fimse
                        Fimse
                     Fimse
                  Fimse
               Fimse
            Fimse
         Ate opbebida = 0
         Escreval("....................................")
         Escreval("")
         Escreval("valor Do Pedido = R$", vlbebida,",00")
         Escreval("....................................")
        bebidas := bebidas + vlbebida
        Timer 3000
        Timer 0
      caso 3
         Repita
            Escreval ("====== ACOMPANHAMENTOS ======")
            Escreval (" 1 Batata Frita -----------> R$ 10,00 ")
            Escreval (" 2 Nuggets ----------------> R$ 12,00 ")
            Escreval (" 3 Aneis de Cebola -------> R$ 15,00 ")
            Escreval (" 4 Asinha de Frango ------> R$ 20,00 ")
            Escreval (" 5 Polenta Frita ----------------> R$15,00 ")
            Escreval (" 6 Quibe ----------------> R$ 16,00 ")
            Escreval (" 7 Piscininha Cheddar ---------> R$ 20,00 ")
            Escreval (" Escolha uma opção de acompnhamento  ")
            leia(opacompanhamento)

            Se opacompanhamento = 0 então
               interrompa
            Fimse

            Escreval ("Informe a quantidade")
            Leia (qtd)

            Se opacompanhamento = 1 então
               vlacompanhamento <- vlacompanhamento + 8 * qtd
            Senao
               Se opacompanhamento = 2 então
                  vlacompanhamento <- vlacompanhamento + 12,50 * qtd
               Senao
                  Se opacompanhamento = 3 então
                     vlacompanhamento <- vlacompanhamento + 14 * qtd
                  Senao
                     Se opacompanhamento = 4 então
                        vlacompanhamento <- vlacompanhamento + 9 * qtd
                     Senao
                        Se opacompanhamento = 5 então
                           vlacompanhamento <- vlacompanhamento + 10 * qtd
                        Senao
                           Se opacompanhamento = 6 então
                              vlacompanhamento <- vlacompanhamento + 5 * qtd
                           Senao
                              Se opacompanhamento = 7 então
                                 vlacompanhamento <- vlacompanhamento + 13 * qtd
                              Fimse
                           Fimse
                        Fimse
                     Fimse
                  Fimse
               Fimse
            Fimse
         Ate opacompanhamento = 0
         Escreval("valor Do Pedido = R$", vlacompanhamento,",00")
        acompanhamentos := acompanhamentos + vlacompanhamento
        Timer 3000
        Timer 0
      Fimescolha
   Ate opc = 0

   total := total + bebidas + lanches + acompanhamentos
   Escreval("....................................")
   Escreval("")
   Escreval("Valor TotaL R$", totaL, ",00")
   Escreval("....................................")
Fimalgoritmo

 

  • Obrigado 1
  • DiF alterou o título para Menu De Lanchonete permitindo opção inexistente
Postado

É uma questão de lógica, depois de escolhido o item você precisa comparar ou limitar ele para aceitar só de 0 a 7 por exemplo.

 

Pode criar um:

 

Se opacompanhamento > 7 então

Escreva ("Digite uma opção entre 0 e 7")

 

Não conheço a sintaxe da limguagem, mas a lógica seria mais ou menos esta.

  • Curtir 3
Postado

@LuizDemarchi Você tem que checar se a quantidade de itens do menu é menor que a quantidade de itens informada.

 

Exemplo:

Repita
   Escreval ("  ======  LANCHES  ======")
   Escreval (" 1 X-burger --------> R$ 14,00")
   Escreval (" 2 X-Salada --------> R$ 18,00")
   Escreval (" 3 X-Bacon  --------> R$ 20.00")
   Escreval (" 4 X-Egg --------> R$ 22.00")
   Escreval (" 5 X-Onion --------> R$ 24.00")
   Escreval (" 6 X-Tudo --------> R$ 28.00")
   Escreval (" 7 X-Infarto --------> R$ 35.00")
   Escreval (" 0 Voltar ao menu anterior "  )
   Escreval (" Escolha uma opção de lanche "  )
   leia(oplanch)

   Se oplanch = 0 então
      interrompa
   Fimse

   // Verifica se a opção é válida primeiro
   se (oplanch <= 7) então
      Escreval ("Informe a quantidade")
      Leia (qtd)

      Se oplanch = 1 então
         vllanch <- vllanch + 10 * qtd
      Senao
         Se oplanch = 2 então
            vllanch <- vllanch + 12 * qtd
         Senao
            Se oplanch = 3 então
               vllanch <- vllanch + 14 * qtd
            Senao
               Se oplanch = 4 então
                  vllanch <- vllanch + 18 * qtd
               Senao
                  Se oplanch = 5 então
                     vllanch <- vllanch + 10 * qtd
                  Senao
                     Se oplanch = 6 então
                        vllanch <- vllanch + 9 * qtd
                     Senao
                        Se oplanch = 7 então
                           vllanch <- vllanch + 16 * qtd
                        Fimse
                     Fimse
                  Fimse
               Fimse
            Fimse
         Fimse
      Fimse
   seNao
      // Mostra que a opção é invalida
      escreval("Opcao invalida!")
   fimSe
Ate oplanch = 0

Isso já resolveria o problema, mas eu recomendo você pensar mais nos dados do programa do que na funcionalidade do mesmo.

Digamos assim, e se você quiser adicionar mais um item no menu?

Vai ficar meio complicado assim, então pense comigo! cada item tem propriedades consigo, nome, preço e quantidade no estoque.

Guardar tudo isso em um vetor seria bem mais pratico, fora que você pode iniciar isso antes que o usuário perceba.

 

Preparei um exemplo, que na minha opinião ficou meio complicado, mas que ilustra bem o que eu estou tentando explicar.

Algoritmo "Restaurante"

const
   CATEGORIA_LANCHE = 1
   CATEGORIA_BEBIDA = 2
   CATEGORIA_ACOMPANHAMENTOS = 3
   CATEGORIA_QUANTIDADE = 3

   // Quantidade Maxima de produtos que podem ser cadastradas
   MAXIMO_PRODUTOS = 10



tipo
   tproduto = registro
      nome:caractere
      preco:real
      descricao:caractere
   fimRegistro

var
   cardapio: vetor [1..CATEGORIA_QUANTIDADE, 1..MAXIMO_PRODUTOS] de tproduto
   quantidade_produtos_categoria: vetor [1..CATEGORIA_QUANTIDADE] de inteiro
   NOMES_CATEGORIAS: vetor [1..CATEGORIA_QUANTIDADE] de caractere
   opcao_menu: inteiro
   opcao_cardapio: inteiro
   contador: inteiro

inicio

   // Inicializa o nome de cada categoria
   NOMES_CATEGORIAS[1] <- "Lanches"
   NOMES_CATEGORIAS[2] <- "Bebidas"
   NOMES_CATEGORIAS[3] <- "Acompanhamentos"

   // Inicializa os produtos
   // Lanches
   cardapio[CATEGORIA_LANCHE, 1].nome <- "X-burger"
   cardapio[CATEGORIA_LANCHE, 1].preco <- 14.00
   cardapio[CATEGORIA_LANCHE, 1].descricao <- "não tem"

   cardapio[CATEGORIA_LANCHE, 2].nome <- "X-Salada"
   cardapio[CATEGORIA_LANCHE, 2].preco <- 18.00
   cardapio[CATEGORIA_LANCHE, 2].descricao <- "não tem"

   cardapio[CATEGORIA_LANCHE, 3].nome <- "X-Bacon"
   cardapio[CATEGORIA_LANCHE, 3].preco <- 20.00
   cardapio[CATEGORIA_LANCHE, 3].descricao <- "não tem"

   cardapio[CATEGORIA_LANCHE, 4].nome <- "X-EGG"
   cardapio[CATEGORIA_LANCHE, 4].preco <- 22.00
   cardapio[CATEGORIA_LANCHE, 4].descricao <- "não tem"

   cardapio[CATEGORIA_LANCHE, 5].nome <- "X-Onion"
   cardapio[CATEGORIA_LANCHE, 5].preco <- 24.00
   cardapio[CATEGORIA_LANCHE, 5].descricao <- "não tem"

   cardapio[CATEGORIA_LANCHE, 6].nome <- "X-Tudo"
   cardapio[CATEGORIA_LANCHE, 6].preco <- 28.00
   cardapio[CATEGORIA_LANCHE, 6].descricao <- "não tem"

   cardapio[CATEGORIA_LANCHE, 7].nome <- "X-Infarto"
   cardapio[CATEGORIA_LANCHE, 7].preco <- 35.00
   cardapio[CATEGORIA_LANCHE, 7].descricao <- "É de morrrer!!!"

   // Quantidade de produtos cadastrados no sistema!!!
   quantidade_produtos_categoria[CATEGORIA_LANCHE] <- 7

   repita
      // Menu princiapal
      escreval("------MENU------")
      para contador de 1 ate CATEGORIA_QUANTIDADE faca
         escreval(contador," - ",NOMES_CATEGORIAS[contador])
      fimPara
      escreval("Digite 0 para sair do programa")
      leia(opcao_menu)
      // Checa se a opção é valida
      se (opcao_menu > CATEGORIA_QUANTIDADE) então
         escreval("Opcao invalida")
      fimSe
      // Checa se o usuario quer encerrar o programa
      se (opcao_menu = 0) então
         escreval("O programa será encerrado!")
      fimSe

      // Cardapio
      se (opcao_menu > 0) e (opcao_menu < CATEGORIA_QUANTIDADE) então
         repita
            // Checa se a categoria já tem produtos cadastrados
            se (quantidade_produtos_categoria[opcao_menu] = 0) então
               escreval("Nenhum produto cadastrado ainda")
            seNao
               // Mostra os produtos
               escreval("--------",NOMES_CATEGORIAS[opcao_menu],"--------")
               para contador de 1 ate quantidade_produtos_categoria[opcao_menu] faca
                  escreval(contador," - ",cardapio[opcao_menu, contador].nome," R$", cardapio[opcao_menu, contador].preco, " Descrição:", cardapio[opcao_menu, contador].descricao)
               fimPara
               escreval("Digite 0 para voltar ao menu anterior")
               leia(opcao_cardapio)
               // Checa se a opcao é válida
               se (opcao_cardapio > quantidade_produtos_categoria[opcao_menu]) então
                  escreval("Opcao invalida")
               fimSe
               se (opcao_cardapio > 0) e (opcao_cardapio <= quantidade_produtos_categoria[opcao_menu]) então
                  escreval("Digite a quantidade desejada")
                  escreval("Digite 0 para cancelar")
                  leia(contador)
                  se (contador = 0) então
                     escreval("adicao do item cancelada")
                  seNao
                       escreval(cardapio[opcao_menu, opcao_cardapio].nome, "*", cardapio[opcao_menu, opcao_cardapio].preco, "=", cardapio[opcao_menu, opcao_cardapio].preco*contador)
                  fimSe
               fimSe
            fimSe
         ate não((quantidade_produtos_categoria[opcao_menu] <> 0) e (opcao_cardapio <> 0))
      fimSe
   ate não(opcao_menu <> 0)

fimAlgoritmo

Recursos usados no algoritmo.

-Registros

-Constantes

-Vetores

-Manual do visualG refatorado

  • Curtir 1
  • Amei 1
Postado

@LuizDemarchi     você poderia usar o comando "escolha / fimescolha / outrocaso" , que já detecta uma opção  inválida ,  e  usar uma variável para armazenar o valor para não repetir a mesma coisas várias vezes , tornaria seu código bem reduzido,  e outra coisa é que os valores usados nos cálculos não é mesmo informado no menu , e um exemplo para  o caso 1 desse seu código  :

caso 1
   Repita
      Escreval ("  ======  LANCHES  ======"      )
      Escreval (" 1 X-burger ---------> R$ 14,00")
      Escreval (" 2 X-Salada ---------> R$ 18,00")
      Escreval (" 3 X-Bacon  ---------> R$ 20.00")
      Escreval (" 4 X-Egg ------------> R$ 22.00")
      Escreval (" 5 X-Onion ----------> R$ 24.00")
      Escreval (" 6 X-Tudo -----------> R$ 28.00")
      Escreval (" 7 X-Infrato --------> R$ 35.00")
      Escreval (" 0 Voltar ao menu anterior"     )
      Escreval (" Escolha uma opção de lanche "  )
      leia(oplanch)
      Se (oplanch > 0) e (oplanch < 8) então
         Escreval ("Informe a quantidade")
         Leia (qtd)
      Fimse

      escolha oplanch
         caso  0
            interrompa
         caso  1
            vl <- 14
         caso  2
            vl <- 18
         caso  3
            vl <- 20
         caso  4
            vl <- 22
         caso  5
            vl <- 24
         caso  6
            vl <- 28
         caso  7
            vl <- 35
         outrocaso
            escreval("Opção inválida !")
            escreval
      fimescolha
      vllanch <- vllanch + vl * qtd
      Ate oplanch = 0
      Escreval("...................................")
      Escreval("")
      Escreval("valor Do Pedido = R$", vllanch,",00")
      Escreval("...................................")
      lanches := lanches + vllanch
      Timer 3000
      Timer 0
   ate oplanch = 0

 

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!