Ir ao conteúdo
  • Cadastre-se

VisualG Gostaria compreender a lógica do código e fazer uma alteração


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

Ola  o seguinte codigo é para reservar lugares no cinema usando vetores, minda duvida da vez é porque no codigo teve que ficar assim

reservas[numerocadeira] <- numerocadeira

numero de cadeiras é um contador?

segue o codigo completo

algoritmo " RESERVAR ESPAÇOS NO CINEMA"
var
   cadeiras: vetor [1..10] de inteiro
   reservas: vetor [1..10] de inteiro
   cont1, numerocadeira : inteiro
   resposta: caractere

inicio
   cont1 <- 0

   para cont1 <- 1 ate 10 faca
      escreva("[B", cont1,"]")
   fimpara

   escreval()
   escreval("===================================================")
   escreval("RESERVAR CADEIRAS")
   escreval("===================================================")
   escreval()

   repita
      escreva("reservar numero da cadeira: B")
      leia(numerocadeira)
      escreval("a cadeira B",numerocadeira , "foi reservada!!")
      escreva("Quer reservar outra?[S/N] ")
      leia(resposta)

      para cont1<- 1 ate 10 faca
         se(reservas[cont1]) = (numerocadeira )  entao
            escreva("[...]")
            se(reservas[cont1] = numerocadeira ) entao
               escreval("ERRO: Lugar Ocupado")
               escreval("Quer reservar outra?[S/N] ")
               Leia(resposta)
            fimse
         fimse
         cont1<-cont1+1
      fimpara
      reservas[numerocadeira] <- numerocadeira
   ate(resposta = "n")
fimalgoritmo

 

e tambem gostaria de saber como faria para quando uma cadeira fosse reservado , eu pudesse substituir por [....]

 

Link para o comentário
Compartilhar em outros sites

16 horas atrás, kalline disse:

Ola  o seguinte codigo é para reservar lugares no cinema usando vetores, minda duvida da vez é porque no codigo teve que ficar assim

reservas[numerocadeira] <- numerocadeira

numero de cadeiras é um contador?

 

Penso que a ideia é, pedir o número que identifica uma cadeira objetivando sua reserva, após ter exibido todos os números de cadeiras possíveis, porém não necessariamente disponíveis nas reservas. Daí a justificativa de uma verificação, após capturar o número da cadeira [sua identificação], pois caso a cadeira esteja 'livre', realiza-se sua reserva por meio desta expressão  '

reservas [numerocadeira] <- numerocadeira

', ou seja, uma cadeira reservada é aquela que o valor no índice do vetor de reservas é igual ao valor no subscrito, subscrito é variável que fica entre colchetes.

 

Suponha que

numerocadeira tem valor 3, logo se expressamos 
reservas[numerocadeira] <- numerocadeira
        ~~~~~~~~~~~~~~~    ~~~~~~~~~~~~~
            |                    |
            +-------> Índice     +---> subscrito

temos o mesmo, só que em valores o seguinte
reservas[3] <- 3

ou seja, depois disso a cadeira do índice 3 é uma reserva porque
o valor no ínidce [3] é igual ao do subscrito 3. 

 

Para tanto é necessária uma verificação que funcione!

[:)

 

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

  • Membro VIP
  • Solução

@kalline, dei uma refatorada no código que postou. Vê se faz mais sentido agora.

 

algoritmo " RESERVAR ESPAÇOS NO CINEMA"
var
   reservas: vetor [1..10] de inteiro
   cont1, numeroCadeira : inteiro
   ocupado: logico
   resposta: caractere

inicio
   para cont1 <- 1 ate 10 faca
      escreva("[B", cont1:1, "]")
   fimpara

   escreval("")
   escreval("===================================================")
   escreval("RESERVAR CADEIRAS")
   escreval("===================================================")

   repita
      escreval("")
      escreva ("Reservar número da cadeira: B")
      leia(numeroCadeira)
      escreval("")

      ocupado <- FALSO
      para cont1 <- 1 ate 10 faca
         se (reservas[cont1]) = numeroCadeira  entao
            ocupado <- VERDADEIRO
         fimSe
      fimPara

      se (não OCUPADO) entao
         reservas[numerocadeira] <- numerocadeira
         escreval("A cadeira B", numerocadeira:1, " foi reservada!!")
      senao
         escreval("ERRO: Lugar Ocupado")
      fimSe

      escreval("")
      escreva ("Quer reservar outra?[S/N] ")
      leia(resposta)
   ate (resposta = "n")
fimAlgoritmo




Na hora de verificar se a poltrona está ocupada, não precisaria percorrer o vetor, pois a posição do vetor já é a posição da própria poltrona. Poderia ser algo assim:

 

Em vez de:

      ocupado <- FALSO
      para cont1 <- 1 ate 10 faca
         se (reservas[cont1]) = numeroCadeira  entao
            ocupado <- VERDADEIRO
         fimSe
      fimPara

 

Fazer:

      ocupado <- FALSO
      se (reservas[numeroCadeira] = numeroCadeira) entao
         ocupado <- VERDADEIRO
      fimSe


Daí, apenas precisa antes garantir que o número da cadeira é válido (no caso entre 1 e 10).

 

Se quiser resumir a verificação:

      se (não (reservas[numeroCadeira] = numeroCadeira)) entao
         reservas[numerocadeira] <- numerocadeira
         escreval("A cadeira B", numerocadeira:1, " foi reservada!!")
      senao
         escreval("ERRO: Lugar Ocupado")
      fimSe

 

 

 

 

Outro ponto é: qual a lógica de armazenar o valor da posição do vetor na própria posição no vetor? Está estranhamente redundante (sempre estará vazio ou estará com o valor da posição, ou seja, está binário...). Poderia utilizar qualquer coisa fixa mesmo... que funcione como uma flag.. como um "x", ou "OCUPADO", ou mesmo utilizar um vetor LOGICO. Exemplo:

 

algoritmo " RESERVAR ESPAÇOS NO CINEMA"
var
   reservas: vetor [1..10] de LOGICO
   cont1, numeroCadeira : inteiro
   ocupado: logico
   resposta: caractere

inicio
   para cont1 <- 1 ate 10 faca
      escreva("[B", cont1:1, "]")
   fimpara

   escreval("")
   escreval("===================================================")
   escreval("RESERVAR CADEIRAS")
   escreval("===================================================")

   repita
      escreval("")
      escreva ("Reservar número da cadeira: B")
      leia(numeroCadeira)
      escreval("")

      se (não reservas[numeroCadeira]) entao
         reservas[numerocadeira] <- VERDADEIRO
         escreval("A cadeira B", numerocadeira:1, " foi reservada!!")
      senao
         escreval("ERRO: Lugar Ocupado")
      fimSe

      escreval("")
      escreva ("Quer reservar outra?[S/N] ")
      leia(resposta)
   ate (resposta = "n")
fimAlgoritmo

 

 

 

Adendo: no VisualG por padrão o variáveis lógicas já são inicializados como FALSO, por isso que não precisaria inicializar o vetor, ou seja, o programa já vai rodar com as poltronas não reservadas (com FALSO).

  • Amei 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!