Ir ao conteúdo

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


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

Postado

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

 

Postado
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
  • Membro VIP
  • Solução
Postado

@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

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!