Skip to content

Instantly share code, notes, and snippets.

@wagfim
Created August 4, 2019 21:53
Show Gist options
  • Save wagfim/fd86056527e5b09e27be5ecf25019ad3 to your computer and use it in GitHub Desktop.
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.
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