Nesta aula iremos construir um programa em Portugol para simular a reserva de assentos em uma sala de cinema.
Exercício: Faça um programa para reservar assentos em uma sala de cinema. A sala possui 25 filas com 30 assentos cada fila. O programa deve funcionar enquanto houver assentos vagos ou não for digitadas duas coordenadas negativas.
Como a sala de cinema possui 25 filas com 30 assentos cada fila, já imaginamos que precisaremos de uma matriz com 25 linhas e 30 colunas.
Precisamos representar cada posição da matriz (poltrona) como vendida ou disponível. Para isso podemos utilizar os números 0 e 1 (0 – disponível, 1 – vendida).
Antes de efetuar qualquer venda precisamos inicializar nossa matriz, ou seja, dizer que todas as poltronas estão vagas. Isso pode ser feito facilmente atribuindo o valor zero (0) a cada posição de nossa matriz.
Em seguida, teremos uma repetição do tipo faça enquanto que irá repetir enquanto houver poltronas vagas e não for digitado uma coordenada negativa. Pediremos ao usuário qual poltrona ele deseja comprar (índice de linha e coluna), validaremos a coordenada, afinal pode ser uma coordenada inválida, e por fim, se for uma coordenada válida e a poltrona estiver disponível (posição igual a zero), então efetuamos a venda da poltrona, atribuindo 1 à posição escolhida.
Código completo para o exercício do cinema.
programa{
/* Aula 95: Faça um programa para reservar assentos em uma sala de cinema.
* A sala possui 25 filas com 30 assentos cada fila. O programa deve funcionar
* enquanto houver assentos vagos ou não for digitadas duas coordenadas negativas.
*
* Escrito por: Wagner Gaspar
* Março de 2021
*/
funcao inicio(){
inteiro l, c, linha, coluna, reservas = 0, sala[25][30]
para(l = 0; l < 25; l++){
para(c = 0; c < 30; c++){
sala[l][c] = 0
}
}
faca{
escreva("0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29\n")
para(l = 0; l < 25; l++){
para(c = 0; c < 30; c++){
escreva(sala[l][c], " ")
}
escreva(" ", l, "\n")
}
escreva("Digie linha e coluna da poltrona desejada: ")
leia(linha, coluna)
se(linha < 0 ou linha > 24){
escreva("\nLinha inválida. Digite outra linha válida!\n")
}
senao{
se(coluna < 0 ou coluna > 29){
escreva("\nColuna inválida. Digite outra coluna válida!\n")
}
senao{
se(sala[linha][coluna] == 1){
escreva("\nPoltrona já reservada. Escolha outra!\n")
}
senao{
sala[linha][coluna] = 1
escreva("\nReserva realizada com sucesso!!!\n")
reservas++
}
}
}
}enquanto(reservas < 750 e linha >= 0 ou coluna >= 0)
}
}
