Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.36 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class Main {
  4.  
  5. static final int ID_NOM_ESPAI = 0;
  6.  
  7. static final int ID_TIPUS_ESPAIS = 1;
  8.  
  9. Scanner scanner = new Scanner(System.in);
  10.  
  11. String[][] espais = {
  12. // nom espai tipus espai
  13.  
  14. {"sala 01", "SA"},
  15. {"sala 02", "SA"},
  16. {"sala 03", "SR"},
  17. {"sala 04", "SR"},
  18. {"sala 05", "DI"},
  19. {"sala 11", "DI"},
  20. {"sala 12", "DI"},
  21. {"sala 13", "DI"},
  22. {"sala 14", "DI"},
  23. {"sala 15", "SR"},
  24. {"sala 16", "DI"},
  25. {"sala 17", "DI"},
  26. {"sala 18", "DI"},
  27. {"sala 19", "DM"},
  28. {"sala 21", "DI"},
  29. {"sala 22", "DI"},
  30. {"sala 23", "DM"},
  31. {"sala 24", "SR"},
  32. {"sala 25", "SR"},
  33. {"sala 26", "DM"},
  34. {"sala 31", "DI"},
  35. {"sala 32", "DI"},
  36. {"sala 33", "DI"},
  37. {"sala 34", "DI"},
  38. {"sala 35", "SR"},
  39. {"sala 36", "SR"},
  40. {"sala 37", "DI"},
  41. {"sala 38", "DI"},
  42. {"sala 39", "DM"},
  43. {"sala 41", "SA"},
  44. {"sala 42", "SR"},
  45. {"sala 43", "SR"},
  46. {"sala 44", "SR"}
  47.  
  48. };
  49.  
  50. int[] capacitatEspais = {
  51. // capacitat nom espai tipus espai
  52.  
  53. 100, //{"sala 1", "SA"},
  54.  
  55. 80, //{"sala 2", "SA"},
  56.  
  57. 8, //{"sala 3", "SR"},
  58.  
  59. 10, //{"sala 4", "SR"},
  60.  
  61. 1, //{"sala 5", "DI"},
  62.  
  63. 1, //{"sala 11", "DI"},
  64.  
  65. 1, //{"sala 12", "DI"},
  66.  
  67. 1, //{"sala 13", "DI"},
  68.  
  69. 1, //{"sala 14", "DI"},
  70.  
  71. 7, //{"sala 15", "SR"},
  72.  
  73. 1, //{"sala 16", "DI"},
  74.  
  75. 1, //{"sala 17", "DI"},
  76.  
  77. 1, //{"sala 18", "DI"},
  78.  
  79. 25, //{"sala 19", "DM"},
  80.  
  81. 1, //{"sala 21", "DI"},
  82.  
  83. 1, //{"sala 22", "DI"},
  84.  
  85. 12, //{"sala 23", "DM"},
  86.  
  87. 8, //{"sala 24", "SR"},
  88.  
  89. 12, //{"sala 25", "SR"},
  90.  
  91. 18, //{"sala 26", "DM"},
  92.  
  93. 1, //{"sala 31", "DI"},
  94.  
  95. 1, //{"sala 32", "DI"},
  96.  
  97. 1, //{"sala 33", "DI"},
  98.  
  99. 1, //{"sala 34", "DI"},
  100.  
  101. 10, //{"sala 35", "SR"},
  102.  
  103. 6, //{"sala 36", "SR"},
  104.  
  105. 1, //{"sala 37", "DI"},
  106.  
  107. 1, //{"sala 38", "DI"},
  108.  
  109. 20, //{"sala 39", "DM"},
  110.  
  111. 50, //{"sala 41", "SA"},
  112.  
  113. 10, //{"sala 42", "SR"},
  114.  
  115. 15, //{"sala 43", "SR"},
  116.  
  117. 15, //{"sala 44", "SR"}
  118. };
  119.  
  120. int[] ocupacioPrevista = {
  121. // ocupat capacitat nom espai tipus espai
  122.  
  123. 0, //100, //{"sala 1", "SA"},
  124.  
  125. 0, //80, //{"sala 2", "SA"},
  126.  
  127. 0, // 8, //{"sala 3", "SR"},
  128.  
  129. 0, //10, //{"sala 4", "SR"},
  130.  
  131. 0, // 1, //{"sala 5", "DI"},
  132.  
  133. 0, // 1, //{"sala 11", "DI"},
  134.  
  135. 0, // 1, //{"sala 12", "DI"},
  136.  
  137. 0, // 1, //{"sala 13", "DI"},
  138.  
  139. 0, // 1, //{"sala 14", "DI"},
  140.  
  141. 0, // 7, //{"sala 15", "SR"},
  142.  
  143. 0, // 1, //{"sala 16", "DI"},
  144.  
  145. 0, // 1, //{"sala 17", "DI"},
  146.  
  147. 0, // 1, //{"sala 18", "DI"},
  148.  
  149. 0, //25, //{"sala 19", "DM"},
  150.  
  151. 0, // 1, //{"sala 21", "DI"},
  152.  
  153. 0, // 1, //{"sala 22", "DI"},
  154.  
  155. 0, //12, //{"sala 23", "DM"},
  156.  
  157. 0, // 8, //{"sala 24", "SR"},
  158.  
  159. 0, //12, //{"sala 25", "SR"},
  160.  
  161. 0, //18, //{"sala 26", "DM"},
  162.  
  163. 0, // 1, //{"sala 31", "DI"},
  164.  
  165. 0, // 1, //{"sala 32", "DI"},
  166.  
  167. 0, // 1, //{"sala 33", "DI"},
  168.  
  169. 0, // 1, //{"sala 34", "DI"},
  170.  
  171. 0, //10, //{"sala 35", "SR"},
  172.  
  173. 0, // 6, //{"sala 36", "SR"},
  174.  
  175. 0, // 1, //{"sala 37", "DI"},
  176.  
  177. 0, // 1, //{"sala 38", "DI"},
  178.  
  179. 0, //20, //{"sala 39", "DM"},
  180.  
  181. 0, //50, //{"sala 41", "SA"},
  182.  
  183. 0, //10, //{"sala 42", "SR"},
  184.  
  185. 0, //15, //{"sala 43", "SR"},
  186.  
  187. 0, //15, //{"sala 44", "SR"}
  188. };
  189.  
  190. public static void main(String[] args) {
  191.  
  192. Main prg = new Main();
  193.  
  194. prg.inici();
  195.  
  196. }
  197.  
  198. private void inici() {
  199.  
  200. boolean sortir = false;
  201. int opcio; //Guardem l'opció de l'usuari
  202.  
  203.  
  204. while (!sortir) {
  205. System.out.println();
  206. System.out.println("Benvingut al programa que et permetrà triar les sales. ");
  207. System.out.println("Elija el tipo de reserva");
  208. System.out.println("1. Normales");
  209. System.out.println("2. A demanda");
  210. System.out.println("Salir");
  211.  
  212. opcio = scanner.nextInt();
  213.  
  214. switch (opcio) {
  215. case 1:
  216. menuReservaNormal();
  217. break;
  218. case 2:
  219. menuReservaDemanda();
  220. break;
  221. case 3:
  222. sortir = true;
  223. fiPrograma();
  224. break;
  225. default:
  226. System.out.println("Només números entre 1 i 4");
  227. }
  228. }
  229.  
  230.  
  231.  
  232.  
  233. }
  234.  
  235. private void menuReservaNormal(){
  236. boolean sortir = false;
  237. while (!sortir) {
  238. System.out.println();
  239. System.out.println("Benvingut al programa que et permetrà triar les sales. ");
  240. System.out.println("");
  241. System.out.println("Seguidament tria quin tipus de sala vols.");
  242. System.out.println("");
  243. System.out.println("1. Sala d'actes - SA");
  244. System.out.println("2. Sala de Reunions - SR");
  245. System.out.println("3. Despatx individual - DI");
  246. System.out.println("4. Despatx múltiple - DM");
  247. System.out.println("5. Sortir");
  248. System.out.println("");
  249. System.out.println("Escriu el número de l'opció:");
  250. int opcio = scanner.nextInt();
  251.  
  252. switch (opcio) {
  253. case 1:
  254. demanarCapacitat("SA");
  255. break;
  256. case 2:
  257. demanarCapacitat("SR");
  258. break;
  259. case 3:
  260. demanarCapacitat("DI");
  261. break;
  262. case 4:
  263. demanarCapacitat("DM");
  264. break;
  265. case 5:
  266. sortir = true;
  267. fiPrograma();
  268. break;
  269. default:
  270. System.out.println("Només números entre 1 i 4");
  271. }
  272. }
  273. }
  274.  
  275. private void menuReservaDemanda(){
  276. boolean sortir = false;
  277. while (!sortir) {
  278. System.out.println();
  279. System.out.println("Benvingut al programa que et permetrà triar les sales. ");
  280. System.out.println("");
  281. System.out.println("Seguidament tria quin tipus de sala vols.");
  282. System.out.println("");
  283. System.out.println("1. Sala d'actes - SA");
  284. System.out.println("2. Sala de Reunions - SR");
  285. System.out.println("3. Despatx individual - DI");
  286. System.out.println("4. Despatx múltiple - DM");
  287. System.out.println("5. Sortir");
  288. System.out.println("");
  289. System.out.println("Escriu el número de l'opció:");
  290. int opcio = scanner.nextInt();
  291.  
  292. switch (opcio) {
  293. case 1:
  294. demanarCapacitatDemanda("SA");
  295. break;
  296. case 2:
  297. demanarCapacitatDemanda("SR");
  298. break;
  299. case 3:
  300. demanarCapacitatDemanda("DI");
  301. break;
  302. case 4:
  303. demanarCapacitatDemanda("DM");
  304. break;
  305. case 5:
  306. sortir = true;
  307. fiPrograma();
  308. break;
  309. default:
  310. System.out.println("Només números entre 1 i 4");
  311. }
  312. }
  313. }
  314.  
  315. private void demanarCapacitat(String tipoSala){
  316.  
  317. int quinaCapacitat = 0;
  318. int opcioReserva;
  319.  
  320. if(tipoSala.equals("DI")){ // si es despacho, no hace falta preguntar ya que siempre es 1
  321. quinaCapacitat = 1;
  322. }else { // en caso contrario, preguntas
  323. System.out.println("Quantes persones hi han de cabre?");
  324. quinaCapacitat = scanner.nextInt();
  325. }
  326.  
  327.  
  328. mostrarEspaisDisponiblesDeTipus(tipoSala, quinaCapacitat);
  329.  
  330. System.out.println("Vols reservar alguna sala de les disponibles?");
  331. System.out.println("1. Sí");
  332. System.out.println("2. No");
  333. opcioReserva = scanner.nextInt();
  334. if (opcioReserva == 1) {
  335. assignarReserva(quinaCapacitat, tipoSala);
  336. } else {
  337. System.out.println("");
  338. System.out.println("Tornem al menú prinicipal");
  339. }
  340.  
  341. }
  342.  
  343. private void demanarCapacitatDemanda(String tipoSala){
  344.  
  345. int quinaCapacitat = 0;
  346. int opcioReserva;
  347.  
  348. if(tipoSala.equals("DI")){ // si es despacho, no hace falta preguntar ya que siempre es 1
  349. quinaCapacitat = 1;
  350. }else { // en caso contrario, preguntas
  351. System.out.println("Quantes persones hi han de cabre?");
  352. quinaCapacitat = scanner.nextInt();
  353. }
  354.  
  355.  
  356. mostrarEspaisDisponiblesDeTipus(tipoSala, quinaCapacitat);
  357.  
  358. System.out.println("Vols reservar alguna sala de les disponibles?");
  359. System.out.println("1. Sí");
  360. System.out.println("2. No");
  361. opcioReserva = scanner.nextInt();
  362. if (opcioReserva == 1) {
  363. assignarReservaDemanda(quinaCapacitat, tipoSala);
  364. } else {
  365. System.out.println("");
  366. System.out.println("Tornem al menú prinicipal");
  367. }
  368.  
  369. }
  370.  
  371. private void assignarReserva(int quinaCapacitat, String tipoSala) {
  372. System.out.println("Aquesta és la " + quinaCapacitat);
  373. int contador = 0;
  374. boolean encontrada = false;
  375. while(contador < capacitatEspais.length && !encontrada){
  376. encontrada = (ocupacioPrevista[contador] == 0 && espais[contador][1].equals(tipoSala) && capacitatEspais[contador] >= quinaCapacitat);
  377. contador++;
  378. }
  379. int sala = contador;
  380. System.out.println("");
  381. ocupacioPrevista[sala-1] = quinaCapacitat; //hacer la reserva
  382. }
  383.  
  384. private void assignarReservaDemanda(int quinaCapacitat, String tipoSala) {
  385. System.out.println("Aquesta és la " + quinaCapacitat);
  386. mostrarEspaisDisponiblesDeTipus(tipoSala, quinaCapacitat);
  387. System.out.println("Escribe el numero de sala que quieres reservar.");
  388. Scanner sc = new Scanner(System.in);
  389. int sala = sc.nextInt();
  390. while (sala > ocupacioPrevista.length){
  391. System.out.println("Error. Introduce un valor menor o igual que el numero de salas.");
  392. sala = sc.nextInt();
  393. }
  394. ocupacioPrevista[sala-1] = quinaCapacitat; //hacer la reserva
  395. System.out.println("Sala numero " + sala + " reservada correctamente.");
  396. }
  397.  
  398.  
  399. private boolean esIdoniIDisponible(int posicio, String tipusEspai, int capacitat) {
  400.  
  401. boolean disponible = false;
  402.  
  403. if (espais[posicio][ID_TIPUS_ESPAIS].equalsIgnoreCase(tipusEspai)) {
  404.  
  405. if (espais[posicio][ID_TIPUS_ESPAIS].equals("DM")) {
  406.  
  407. disponible = ocupacioPrevista[posicio] < capacitatEspais[posicio];
  408.  
  409. } else {
  410.  
  411. disponible = ocupacioPrevista[posicio] == 0 && capacitatEspais[posicio] >= capacitat;
  412.  
  413. }
  414.  
  415. }
  416.  
  417. return disponible;
  418.  
  419. }
  420.  
  421. private void mostrarEspaisDisponiblesDeTipus(String tipusEspai, int capacitatNecessaria) {
  422.  
  423. System.out.println("Sala capacitat ocupacio");
  424.  
  425. System.out.println("==========================");
  426.  
  427. for (int posicio = 0; posicio < espais.length; ++posicio) {
  428.  
  429. if (esIdoniIDisponible(posicio, tipusEspai, capacitatNecessaria)) {
  430.  
  431. System.out.print(espais[posicio][ID_NOM_ESPAI]);
  432.  
  433. System.out.print("\t ");
  434.  
  435. System.out.print(capacitatEspais[posicio]);
  436.  
  437. System.out.print("\t");
  438.  
  439. System.out.println(ocupacioPrevista[posicio]);
  440.  
  441. }
  442.  
  443. }
  444.  
  445. System.out.println("--------------------------");
  446.  
  447. }
  448.  
  449. //Mètode que resol el subproblema de mostrar un missatge de finalització
  450. private void fiPrograma() {
  451. System.out.println("El programa ha finalitzat");
  452. }
  453.  
  454.  
  455. private void hayHabitacionLibre(int numeroPersonas){
  456. int contador = 0;
  457. boolean encontrada = false;
  458. while(contador < capacitatEspais.length && !encontrada){
  459. encontrada = (ocupacioPrevista[contador] == 0 && espais[contador][0].equals("SA"));
  460. contador++;
  461. }
  462. int sala = contador -1;
  463. capacitatEspais[sala] = numeroPersonas;
  464.  
  465. }
  466.  
  467. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement