Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class Main {
- static final int ID_NOM_ESPAI = 0;
- static final int ID_TIPUS_ESPAIS = 1;
- Scanner scanner = new Scanner(System.in);
- String[][] espais = {
- // nom espai tipus espai
- {"sala 01", "SA"},
- {"sala 02", "SA"},
- {"sala 03", "SR"},
- {"sala 04", "SR"},
- {"sala 05", "DI"},
- {"sala 11", "DI"},
- {"sala 12", "DI"},
- {"sala 13", "DI"},
- {"sala 14", "DI"},
- {"sala 15", "SR"},
- {"sala 16", "DI"},
- {"sala 17", "DI"},
- {"sala 18", "DI"},
- {"sala 19", "DM"},
- {"sala 21", "DI"},
- {"sala 22", "DI"},
- {"sala 23", "DM"},
- {"sala 24", "SR"},
- {"sala 25", "SR"},
- {"sala 26", "DM"},
- {"sala 31", "DI"},
- {"sala 32", "DI"},
- {"sala 33", "DI"},
- {"sala 34", "DI"},
- {"sala 35", "SR"},
- {"sala 36", "SR"},
- {"sala 37", "DI"},
- {"sala 38", "DI"},
- {"sala 39", "DM"},
- {"sala 41", "SA"},
- {"sala 42", "SR"},
- {"sala 43", "SR"},
- {"sala 44", "SR"}
- };
- int[] capacitatEspais = {
- // capacitat nom espai tipus espai
- 100, //{"sala 1", "SA"},
- 80, //{"sala 2", "SA"},
- 8, //{"sala 3", "SR"},
- 10, //{"sala 4", "SR"},
- 1, //{"sala 5", "DI"},
- 1, //{"sala 11", "DI"},
- 1, //{"sala 12", "DI"},
- 1, //{"sala 13", "DI"},
- 1, //{"sala 14", "DI"},
- 7, //{"sala 15", "SR"},
- 1, //{"sala 16", "DI"},
- 1, //{"sala 17", "DI"},
- 1, //{"sala 18", "DI"},
- 25, //{"sala 19", "DM"},
- 1, //{"sala 21", "DI"},
- 1, //{"sala 22", "DI"},
- 12, //{"sala 23", "DM"},
- 8, //{"sala 24", "SR"},
- 12, //{"sala 25", "SR"},
- 18, //{"sala 26", "DM"},
- 1, //{"sala 31", "DI"},
- 1, //{"sala 32", "DI"},
- 1, //{"sala 33", "DI"},
- 1, //{"sala 34", "DI"},
- 10, //{"sala 35", "SR"},
- 6, //{"sala 36", "SR"},
- 1, //{"sala 37", "DI"},
- 1, //{"sala 38", "DI"},
- 20, //{"sala 39", "DM"},
- 50, //{"sala 41", "SA"},
- 10, //{"sala 42", "SR"},
- 15, //{"sala 43", "SR"},
- 15, //{"sala 44", "SR"}
- };
- int[] ocupacioPrevista = {
- // ocupat capacitat nom espai tipus espai
- 0, //100, //{"sala 1", "SA"},
- 0, //80, //{"sala 2", "SA"},
- 0, // 8, //{"sala 3", "SR"},
- 0, //10, //{"sala 4", "SR"},
- 0, // 1, //{"sala 5", "DI"},
- 0, // 1, //{"sala 11", "DI"},
- 0, // 1, //{"sala 12", "DI"},
- 0, // 1, //{"sala 13", "DI"},
- 0, // 1, //{"sala 14", "DI"},
- 0, // 7, //{"sala 15", "SR"},
- 0, // 1, //{"sala 16", "DI"},
- 0, // 1, //{"sala 17", "DI"},
- 0, // 1, //{"sala 18", "DI"},
- 0, //25, //{"sala 19", "DM"},
- 0, // 1, //{"sala 21", "DI"},
- 0, // 1, //{"sala 22", "DI"},
- 0, //12, //{"sala 23", "DM"},
- 0, // 8, //{"sala 24", "SR"},
- 0, //12, //{"sala 25", "SR"},
- 0, //18, //{"sala 26", "DM"},
- 0, // 1, //{"sala 31", "DI"},
- 0, // 1, //{"sala 32", "DI"},
- 0, // 1, //{"sala 33", "DI"},
- 0, // 1, //{"sala 34", "DI"},
- 0, //10, //{"sala 35", "SR"},
- 0, // 6, //{"sala 36", "SR"},
- 0, // 1, //{"sala 37", "DI"},
- 0, // 1, //{"sala 38", "DI"},
- 0, //20, //{"sala 39", "DM"},
- 0, //50, //{"sala 41", "SA"},
- 0, //10, //{"sala 42", "SR"},
- 0, //15, //{"sala 43", "SR"},
- 0, //15, //{"sala 44", "SR"}
- };
- public static void main(String[] args) {
- Main prg = new Main();
- prg.inici();
- }
- private void inici() {
- boolean sortir = false;
- int opcio; //Guardem l'opció de l'usuari
- while (!sortir) {
- System.out.println();
- System.out.println("Benvingut al programa que et permetrà triar les sales. ");
- System.out.println("Elija el tipo de reserva");
- System.out.println("1. Normales");
- System.out.println("2. A demanda");
- System.out.println("Salir");
- opcio = scanner.nextInt();
- switch (opcio) {
- case 1:
- menuReservaNormal();
- break;
- case 2:
- menuReservaDemanda();
- break;
- case 3:
- sortir = true;
- fiPrograma();
- break;
- default:
- System.out.println("Només números entre 1 i 4");
- }
- }
- }
- private void menuReservaNormal(){
- boolean sortir = false;
- while (!sortir) {
- System.out.println();
- System.out.println("Benvingut al programa que et permetrà triar les sales. ");
- System.out.println("");
- System.out.println("Seguidament tria quin tipus de sala vols.");
- System.out.println("");
- System.out.println("1. Sala d'actes - SA");
- System.out.println("2. Sala de Reunions - SR");
- System.out.println("3. Despatx individual - DI");
- System.out.println("4. Despatx múltiple - DM");
- System.out.println("5. Sortir");
- System.out.println("");
- System.out.println("Escriu el número de l'opció:");
- int opcio = scanner.nextInt();
- switch (opcio) {
- case 1:
- demanarCapacitat("SA");
- break;
- case 2:
- demanarCapacitat("SR");
- break;
- case 3:
- demanarCapacitat("DI");
- break;
- case 4:
- demanarCapacitat("DM");
- break;
- case 5:
- sortir = true;
- fiPrograma();
- break;
- default:
- System.out.println("Només números entre 1 i 4");
- }
- }
- }
- private void menuReservaDemanda(){
- boolean sortir = false;
- while (!sortir) {
- System.out.println();
- System.out.println("Benvingut al programa que et permetrà triar les sales. ");
- System.out.println("");
- System.out.println("Seguidament tria quin tipus de sala vols.");
- System.out.println("");
- System.out.println("1. Sala d'actes - SA");
- System.out.println("2. Sala de Reunions - SR");
- System.out.println("3. Despatx individual - DI");
- System.out.println("4. Despatx múltiple - DM");
- System.out.println("5. Sortir");
- System.out.println("");
- System.out.println("Escriu el número de l'opció:");
- int opcio = scanner.nextInt();
- switch (opcio) {
- case 1:
- demanarCapacitatDemanda("SA");
- break;
- case 2:
- demanarCapacitatDemanda("SR");
- break;
- case 3:
- demanarCapacitatDemanda("DI");
- break;
- case 4:
- demanarCapacitatDemanda("DM");
- break;
- case 5:
- sortir = true;
- fiPrograma();
- break;
- default:
- System.out.println("Només números entre 1 i 4");
- }
- }
- }
- private void demanarCapacitat(String tipoSala){
- int quinaCapacitat = 0;
- int opcioReserva;
- if(tipoSala.equals("DI")){ // si es despacho, no hace falta preguntar ya que siempre es 1
- quinaCapacitat = 1;
- }else { // en caso contrario, preguntas
- System.out.println("Quantes persones hi han de cabre?");
- quinaCapacitat = scanner.nextInt();
- }
- mostrarEspaisDisponiblesDeTipus(tipoSala, quinaCapacitat);
- System.out.println("Vols reservar alguna sala de les disponibles?");
- System.out.println("1. Sí");
- System.out.println("2. No");
- opcioReserva = scanner.nextInt();
- if (opcioReserva == 1) {
- assignarReserva(quinaCapacitat, tipoSala);
- } else {
- System.out.println("");
- System.out.println("Tornem al menú prinicipal");
- }
- }
- private void demanarCapacitatDemanda(String tipoSala){
- int quinaCapacitat = 0;
- int opcioReserva;
- if(tipoSala.equals("DI")){ // si es despacho, no hace falta preguntar ya que siempre es 1
- quinaCapacitat = 1;
- }else { // en caso contrario, preguntas
- System.out.println("Quantes persones hi han de cabre?");
- quinaCapacitat = scanner.nextInt();
- }
- mostrarEspaisDisponiblesDeTipus(tipoSala, quinaCapacitat);
- System.out.println("Vols reservar alguna sala de les disponibles?");
- System.out.println("1. Sí");
- System.out.println("2. No");
- opcioReserva = scanner.nextInt();
- if (opcioReserva == 1) {
- assignarReservaDemanda(quinaCapacitat, tipoSala);
- } else {
- System.out.println("");
- System.out.println("Tornem al menú prinicipal");
- }
- }
- private void assignarReserva(int quinaCapacitat, String tipoSala) {
- System.out.println("Aquesta és la " + quinaCapacitat);
- int contador = 0;
- boolean encontrada = false;
- while(contador < capacitatEspais.length && !encontrada){
- encontrada = (ocupacioPrevista[contador] == 0 && espais[contador][1].equals(tipoSala) && capacitatEspais[contador] >= quinaCapacitat);
- contador++;
- }
- int sala = contador;
- System.out.println("");
- ocupacioPrevista[sala-1] = quinaCapacitat; //hacer la reserva
- }
- private void assignarReservaDemanda(int quinaCapacitat, String tipoSala) {
- System.out.println("Aquesta és la " + quinaCapacitat);
- mostrarEspaisDisponiblesDeTipus(tipoSala, quinaCapacitat);
- System.out.println("Escribe el numero de sala que quieres reservar.");
- Scanner sc = new Scanner(System.in);
- int sala = sc.nextInt();
- while (sala > ocupacioPrevista.length){
- System.out.println("Error. Introduce un valor menor o igual que el numero de salas.");
- sala = sc.nextInt();
- }
- ocupacioPrevista[sala-1] = quinaCapacitat; //hacer la reserva
- System.out.println("Sala numero " + sala + " reservada correctamente.");
- }
- private boolean esIdoniIDisponible(int posicio, String tipusEspai, int capacitat) {
- boolean disponible = false;
- if (espais[posicio][ID_TIPUS_ESPAIS].equalsIgnoreCase(tipusEspai)) {
- if (espais[posicio][ID_TIPUS_ESPAIS].equals("DM")) {
- disponible = ocupacioPrevista[posicio] < capacitatEspais[posicio];
- } else {
- disponible = ocupacioPrevista[posicio] == 0 && capacitatEspais[posicio] >= capacitat;
- }
- }
- return disponible;
- }
- private void mostrarEspaisDisponiblesDeTipus(String tipusEspai, int capacitatNecessaria) {
- System.out.println("Sala capacitat ocupacio");
- System.out.println("==========================");
- for (int posicio = 0; posicio < espais.length; ++posicio) {
- if (esIdoniIDisponible(posicio, tipusEspai, capacitatNecessaria)) {
- System.out.print(espais[posicio][ID_NOM_ESPAI]);
- System.out.print("\t ");
- System.out.print(capacitatEspais[posicio]);
- System.out.print("\t");
- System.out.println(ocupacioPrevista[posicio]);
- }
- }
- System.out.println("--------------------------");
- }
- //Mètode que resol el subproblema de mostrar un missatge de finalització
- private void fiPrograma() {
- System.out.println("El programa ha finalitzat");
- }
- private void hayHabitacionLibre(int numeroPersonas){
- int contador = 0;
- boolean encontrada = false;
- while(contador < capacitatEspais.length && !encontrada){
- encontrada = (ocupacioPrevista[contador] == 0 && espais[contador][0].equals("SA"));
- contador++;
- }
- int sala = contador -1;
- capacitatEspais[sala] = numeroPersonas;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement