Ir ao conteúdo
  • Cadastre-se

VisualG vetores ---- ocupado/ desocupado/mostrar local ocupado


Posts recomendados

       Bom dia!

    Gostaria da ajuda de vocês.

    Estou tentando criar um algoritmo  usando vetores da seguinte maneira.

    No cinema, quero escolher uma cadeira na fileira B, caso essa cadeira esteja ocupada aparece escrito :"ERRO: LUGAR OCUPADO" ,

caso não esteja aparece:"Cadeira .... reservada".    

     MAS NÃO ESTOU CONSEGUINDO, PODEM ME AJUDAR? :tw_confounded:

 

algoritmo "Cinema-2"
var
   B: vetor [1..10] de Inteiro
   Cadeira, Reser: Inteiro
   Resp: Caractere
   I, J: Inteiro
inicio

      Resp <- "S"
      Enquanto (Resp = "S") faca
      Para I <- 1 ate 10 faca
          Escreva ("[B",I,"]" )
      FimPara





        Escreval
        Escreva ("Reserva a cadeira: B")
        Leia (Cadeira)
          Se Cadeira <> 5 entao
            Escreval ("Cadeira B", Cadeira ," reservada!")
              SeNao
                   Escreval ("ERRO: LUGAR OCUPADO")
          FimSe
        Escreval
        Escreva ("Quer reserva outro? [S/N] ")
        Leia (Resp)
        LimpaTela

      FimEnquanto
fimalgoritmo

 

  PRECISA FICAR QUE NEM NA IMAGEM.

 

Exercicio Resevar cinema 2.png

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

  • Membro VIP

Olá.

 

 

Antes de se preocupar se uma cadeira está ocupada ou não, implemente a ocupação em si. No seu código você só está exibindo uma mensagem na tela.

 

 

 

adicionado 8 minutos depois

No vetor, poderia armazenar o número da poltrona. Na hora de imprimir, usa o valor que está no vetor. Ao reservar, muda o valor da posição para 0.

 

Para iniciar, sugiro fazer o seguinte:

- inicialize o vetor de forma que cada posição do vetor irá armazenar o seu respectivo número da poltrona, ou seja, posição 1, terá o valor 1. Posição 2, o valor 2... assim por diante.

- exiba a lista de poltronas na tela (utilizando os valores do vetor).

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

3 horas atrás, Simon Viegas disse:

Olá.

 

 

Antes de se preocupar se uma cadeira está ocupada ou não, implemente a ocupação em si. No seu código você só está exibindo uma mensagem na tela.

 

 

 

adicionado 8 minutos depois

No vetor, poderia armazenar o número da poltrona. Na hora de imprimir, usa o valor que está no vetor. Ao reservar, muda o valor da posição para 0.

 

Para iniciar, sugiro fazer o seguinte:

- inicialize o vetor de forma que cada posição do vetor irá armazenar o seu respectivo número da poltrona, ou seja, posição 1, terá o valor 1. Posição 2, o valor 2... assim por diante.

- exiba a lista de poltronas na tela (utilizando os valores do vetor).

  Boa tarde!

   OBRIGADO POR RESPONDER!

   Eu pequei outros exemplos e consegui fazer.

 

<code> algoritmo "Cinema-2"
var
   B: vetor [1..10] de Inteiro
   Resp: Caractere
   I,Reser: Inteiro
    Procedimento Nome()
        Inicio
             Escreval ("---------------------------------------------------")
             Escreval ("                   Cinema Nort                     ")
             Escreval ("---------------------------------------------------")
    FimProcedimento
inicio
      Nome
      Repita
      Para I <- 1 ate 10 faca
          se (B[I] = 1) entao
            escreva (" [--]")
         senao
            escreva (" [B",I,"]")
         fimse
      fimpara

        Escreval
        Escreva ("Reserva a cadeira: B")
        Leia (Reser)

          Se (B [Reser] = 1) entao
            Escreval ("ERRO: LUGAR OCUPADO")
                SeNao
                    Escreval ("Cadeira ", reser," reservada.")
          FimSe
        B [Reser] <- 1


        Escreva ("Quer reserva outro? [S/N] ")
        Leia (Resp)
        LimpaTela
        Nome
      Ate (Resp = "N")
fimalgoritmo

 

       MAS!  Não entendi essa parte :

       "Para I <- 1 ate 10 faca
          se (B[i] = 1) entao  // EXPLICA ESSE NUMERO 1 POR FAVOR.
            escreva (" [--]")
         senao
            escreva (" [B",I,"]")
         fimse
      fimpara"  

         

          COM ESSA:

          "Se (B [Reser] = 1) entao
            Escreval ("ERRO: LUGAR OCUPADO")
                SeNao
                    Escreval ("Cadeira ", reser," reservada.")
          FimSe
        B [Reser] <- 1"     ///  ??????????  </code>   

 

          EU TINHA FEITO  ANTES MAS NÃO DEU CERTO, POR QUÊ?

                           

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

  • Membro VIP

@Leothehumble, por favor, edite sua postagem e reinsira os códigos. Aqui no fórum os códigos devem ser postado dentro da tag CODE (basta clicar no botão <>).

adicionado 21 minutos depois


Peguei o código e tentei dar uma arrumada, veja:

algoritmo "Cinema-2"
var
   B      :vetor [1..10] de inteiro
   resp   :caractere
   i      :inteiro
   reserva:inteiro
   
procedimento Nome()
   inicio
   escreval ("---------------------------------------------------")
   escreval ("                   Cinema Nort                     ")
   escreval ("---------------------------------------------------")
   fimProcedimento

inicio
//nome()
repita
   nome()
   para i <- 1 ate 10 faca
      se (B[i] = 1) entao //se igual a 1, é porque está reservado
         escreva (" [--]") //exibe indicando que não está vago
      senao //por padrão, as posições ficam com 0
         escreva (" [B",I,"]") //exibe o número da poltrona
      fimse
   fimpara
   escreval()
   Escreva ("Reserva a cadeira: B")
   leia(reserva)
   se (B[reserva] = 1) ENTÃO
      escreval ("ERRO: LUGAR OCUPADO")
   seNao
      B[reserva] <- 1
      escreval ("Cadeira ",reserva," reservada.")
   fimSe
   //B[Reser] <- 1
   escreva ("Quer reserva outro? [S/N] ")
   leia (Resp)
   limpaTela
   //nome()
ate (resp = "N")
fimAlgoritmo

 

Mas ai tem que continuar analisando e ajustando... por exemplo, o que acontece quando insere uma cadeira que não está na faixa, por exemplo a cadeira 25? o que deveria acontecer?

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

    Desculpa, é que tenho déficit de atenção. Vou te pedir para continuar tendo paciência comigo. kkkkkkkkk

    Eu coloquei numero 2 no lugar do 1 para fazer um teste:

    <code>

      Para I <- 1 ate 10 faca
          se (B = 2) entao
            escreva (" [--]")
         senao
            escreva (" [B",I,"]")
         fimse 

   </code>

   Continuou dando certo.

    Então esse numero foi criado como VALOR vazio para  reservar uma cadeira ? 

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

  • Membro VIP

1#

Para inserir a tag code basta clicar no botão <> (barra de formatação que fica em cima). Por favor, edite a postagem e reinsira o código com a tag.

 

Mais sobre aqui:

 

 

 

2#

Em 24/08/2018 às 16:51, Leothehumble disse:

Então esse numero foi criado como VALOR vazio para  reservar uma cadeira ? 

 

Os valores escolhidos estão relacionados a uma flag (sugiro dar uma pesquisada), ou seja, uma "bandeira" que indicará se a poltrona está ocupada ou não.

 

Qual a ideia? o programa precisa de algo para armazenar quais as poltronas estão vazias e quais estão ocupadas (obs.: poderiam existir outros estados, como "indisponível", "reservada" etc). No caso foi usado um vetor. Se na posição do vetor tiver o valor 1, indica (no contexto, a flag sugere) que esta posição já está ocupada, caso contenha 0, está disponível.

 

Aí entra outras característica do Visualg (e sua linguagem de programação) que, "ao executar a declaração da variável, automaticamente, o Visualg atribui o valor padrão do tipo dessa variável", ou seja, o que é inteiro fica com 0; o que é caractere fica com ""; o que é logico fica com falso; etc. Veja, como inicialmente as poltronas estão livres, fez mais sentido associar o "0" ao livre. E 1 (poderia ser qualquer* valor) para ocupado. Ao tentar reservar uma poltrona, após efetuar as devidas verificações, a posição do vetor que corresponde à poltrona muda para 1.

 

Na hora de exibir a lista de poltronas, o programa verifica o vetor e exibe de acordo com o que o valor contido... poderia ser algo assim:

   para i <- 1 ate 10 faca
      se (B[i] = 1) entao //se igual a 1, é porque está reservado
         escreva (" [--]") //exibe indicando que não está vago
      senao
         se (B[i] = 0) entao //se igual a 0, está disponível
            escreva (" [B",I,"]") //exibe o número da poltrona
         fimSe
      fimSe
   fimpara

Mas como OU está reservado OU está livre, o programador resolveu (lá do seu código) não fazer uma nova verificação (segundo se), pois, senão está reservado, necessariamente estará livre.

 

 

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!