Created
August 4, 2019 21:53
-
-
Save wagfim/fd86056527e5b09e27be5ecf25019ad3 to your computer and use it in GitHub Desktop.
Uma empresa de ônibus possui um sistema que utiliza uma matriz de 4x8 para representar os lugares dos passageiros nos ônibus. Crie uma opção para reservar lugares com base no numero da poltrona; Crie uma opção para exibir os lugares disponíveis e ocupados.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Scanner; | |
/** | |
* @author Wagner Bonfim | |
*/ | |
public class Questao9 { | |
public static void main(String[] args) { | |
Scanner leitor = new Scanner(System.in); | |
boolean rodarPrograma = true; | |
int[][] poltronasNumeradas = numerarPoltronas(); //usado para listar os numeros | |
boolean[][] poltronas = new boolean[4][8]; //usado para reserva | |
exibirPoltronas(poltronasNumeradas, poltronas); | |
do { | |
System.out.println("--------------------"); | |
System.out.println("1. Reservar poltrona"); | |
System.out.println("2. Exibir poltronas"); | |
System.out.println("0. Sair"); | |
System.out.print("> "); | |
int opcao = leitor.nextInt(); | |
switch (opcao) { | |
case 1: | |
System.out.print("Informe o número da poltrona:"); | |
int numeroPoltrona = leitor.nextInt(); | |
if (numeroPoltrona > 0 && numeroPoltrona < 33) { | |
//encontra a posição correta (linhaXcoluna) com base no numero que o usuario informou | |
int[] posicaoPoltrona = encontrarPosicaoPoltrona(poltronasNumeradas, numeroPoltrona); | |
//verifica se a poltrona está livre | |
boolean disponibilidadePoltrona = verificarDisponibilidade(poltronas, posicaoPoltrona); | |
if (disponibilidadePoltrona) { //se a poltrona estiver livre, faça a reserva | |
poltronas[posicaoPoltrona[0]][posicaoPoltrona[1]] = true; | |
} else { | |
System.out.println("Poltrona indisponível"); | |
} | |
} else { //usuário digitou numero abaixo de 1 ou maior que 32 | |
System.out.println("Poltrona inexistente!"); | |
} | |
break; | |
case 2: | |
exibirPoltronas(poltronasNumeradas, poltronas); | |
break; | |
case 0: | |
rodarPrograma = false; | |
break; | |
} | |
} while (rodarPrograma); | |
} | |
public static int[][] numerarPoltronas() { | |
int[][] matriz = new int[4][8]; | |
int poltrona = 1; | |
for (int j = 0; j < matriz[0].length; j++) { //coluna | |
for (int i = matriz.length - 1; i > -1; i--) { //linha | |
matriz[i][j] = poltrona; | |
poltrona++; | |
} | |
} | |
return matriz; | |
} | |
public static void exibirPoltronas(int[][] poltronasNumeradas, boolean[][] poltronas) { | |
for (int i = 0; i < poltronasNumeradas.length; i++) { | |
for (int j = 0; j < poltronasNumeradas[i].length; j++) { | |
if (poltronasNumeradas[i][j] < 10) { //numeração abaixo de 10 >> coloque um zero à esquerda | |
System.out.print(0); | |
} | |
String status = " "; //se a poltrona estiver livre, imprima vazio | |
if (poltronas[i][j] == true) { | |
status = "X"; //se a poltrona estiver livre, imprima um X | |
} | |
System.out.print(poltronasNumeradas[i][j] + "[" + status + "] "); //15[ ] ou 15[X] | |
} | |
System.out.println(); | |
} | |
} | |
public static int[] encontrarPosicaoPoltrona(int[][] disposicaoPoltronas, int numeroPoltrona) { | |
int[] posicao = new int[2]; //linha ; coluna | |
for (int i = 0; i < disposicaoPoltronas.length; i++) { | |
for (int j = 0; j < disposicaoPoltronas[i].length; j++) { | |
if (disposicaoPoltronas[i][j] == numeroPoltrona) { | |
posicao[0] = i; //linha | |
posicao[1] = j; //coluna | |
} | |
} | |
} | |
return posicao; | |
} | |
public static boolean verificarDisponibilidade(boolean[][] poltronas, int[] posicaoPoltrona) { | |
boolean disponivel = true; | |
if (poltronas[posicaoPoltrona[0]][posicaoPoltrona[1]] == true) | |
disponivel = false; | |
return disponivel; //se a posição estiver false, a poltrona está disponivel | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment