Mostrando entradas con la etiqueta Teatro. Mostrar todas las entradas
Mostrando entradas con la etiqueta Teatro. Mostrar todas las entradas

Teatro


Nos proponen crear un programa modular en java que permita el control de un pequeño teatro. Este tendrá tres zonas bien determinadas: lateral_izquierda (E), central (C) y lateral_derecha (D). Nos será más sencillo si nos fijamos en el dibujo:

Escenario



0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
0






















1






















2






















3






















4























 

Las columnas 5 y 16 serán las que nos servirán para simular los pasillos de acceso, por lo que no tendremos butacas.

Las casillas de la matriz (las butacas) podrán tomar tres posibles estados:
0 -> asiento libre, 1 -> asiento ocupado, 2 -> pasillo

Tendremos también un pequeño vector asociado a las filas (0 .. 4) donde guardaremos el precio de las entradas en euros (dos decimales) de cada fila. Las entradas de los dos laterales serán siempre un 15% más baratas que las centrales.

Nos piden crear un menú donde se llamen a las siguientes acciones / funciones:

• Llenar automáticamente todo el vector con los precios de las filas.

        Por ejemplo: Fila 0: 60 € Fila 1: 50 € Fila 2: 40 € Fila 3: 35 € Fila 4: 30 €

• Iniciar el teatro -> todas las butacas vacías + los pasillos definidos. Cuidado! No hay mostrarlo por pantalla gráficamente.

• Reservar "n" entradas siempre consecutivas (en la misma fila) y en una misma zona del teatro. El indicaremos, la zona (E, C, D), la fila y la columna inicial, y cuántas entradas hacia la derecha queremos reservar. Si la reserva se puede efectuar, entonces nos devolverá el importe total en euros. Si no se puede dar un error.

• Calcular el precio total de la recaudación del teatro en euros (dos decimales).

• Exportar a archivo de texto (situado siempre en c: \ temp \ teatre.txt) el estado actual de todas las butacas del teatro. Si ya existe el sobreescrito.

• Mostrar gráficamente por pantalla en forma de matriz del estado de las butacas de las tres zonas (Coloque los numeritos de las filas y columnas.) Si un sillón está ocupada -> 'O', si está libre -> 'L ', y si se pasillo ->' P '. Sólo esta pregunta hay que mostrarse gráficamente, en las demás no es necesario.


  1. import java.lang.String;
  2.    import java.lang.Math;
  3.    import cs1.*;
  4.    import java.util.*;
  5.    import java.text.*;
  6.    import java.io.*;
  7.    public class Teatre   {
  8.      
  9.       public static void reservas (int [][] filas, double [][] vector,int columna, int num_entradas, int fila ) {
  10.          double precio=0;
  11.          boolean exit=true;
  12.          for (int i=columna;i<num_entradas+columna; i++){
  13.                
  14.             if (filas[i][0]==0||filas[i][1]==0||filas[i][2]==0||filas[i][3]==0){
  15.                filas[i][fila]=1;
  16.                precio = vector[i][fila]*num_entradas;
  17.             }
  18.             else {
  19.                exit=false;
  20.                System.out.println("Error, la columna numero "+i+" introduida esta ocupada, reserva tus entradas en otras columnas o filas");
  21.                for (int j=columna;j<num_entradas+columna; j++){
  22.                   filas[j][fila]=0;
  23.                
  24.                }
  25.             }
  26.          }
  27.          if (exit==true){
  28.             DecimalFormat dc = new DecimalFormat("#.##");
  29.             System.out.println("El precio en total por la reserva es: "+dc.format(precio)+"€");}
  30.      
  31.      
  32.       }
  33.        
  34.       public static String mostrar_graficament (int [][] filas, int num_fila, int num_fila_syst, int i ) {
  35.                
  36.          String fila="";
  37.          if (filas[i][num_fila]==0) {
  38.             fila=fila+"\nFila "+num_fila_syst+" - Butaca "+(i+1)+": L";
  39.                
  40.          }
  41.          else   if (filas[i][num_fila]==1) {
  42.             fila=fila+"\nFila "+num_fila_syst+" - Butaca "+(i+1)+": O";
  43.                
  44.          }
  45.          else if (filas[i][num_fila]==2) {
  46.             fila=fila+"\nFila "+num_fila_syst+" - Butaca "+(i+1)+": P";
  47.                        
  48.          }
  49.          return fila;
  50.      
  51.       }
  52.        
  53.    
  54.        
  55.        
  56.        
  57.       public static void Editar_Texto(int [][] filas, String arxiu){
  58.      
  59.          try {
  60.             BufferedWriter bw = new BufferedWriter(new FileWriter(arxiu,false));
  61.             for (int i=0; i<21; i++) {
  62.                bw.append(mostrar_graficament(filas,0,1,i)+System.getProperty("line.separator")+mostrar_graficament(filas,1,2,i)+System.getProperty("line.separator")+
  63.                   mostrar_graficament(filas,2,3,i)+System.getProperty("line.separator")+mostrar_graficament(filas,3,4,i));
  64.                bw.newLine();
  65.            
  66.                          
  67.             }System.out.println("El fixer de resultats s'ha creat a c:\\temp\\resultats.txt");
  68.             bw.close();
  69.          }
  70.             catch (IOException e) {System.out.print("Error al escribir!");}
  71.       }
  72.    
  73.        
  74.       public static void main(String args[])
  75.       {
  76.      
  77.          double [][] vector = new double [21][4];
  78.          int [][] filas = new int [21][4];
  79.          boolean blnexit=false;
  80.        
  81.        
  82.      
  83.          while(blnexit==false){
  84.          
  85.             int opcion=0;
  86.             double fila1=0, fila2=0, fila3=0, fila4=0;
  87.             System.out.println();
  88.             System.out.println ("Menu *************************");
  89.             System.out.println ("1) Omplir");
  90.             System.out.println ("2) Inicialitzar");
  91.             System.out.println ("3) Reservar");
  92.             System.out.println ("4) Calcular");
  93.             System.out.println ("5) Exportar a fitxer de text");
  94.             System.out.println ("6) Mostrar Gràficament");
  95.             System.out.println ("0) Sortir                   *");
  96.             System.out.println ("******************************");
  97.          
  98.             opcion=Keyboard.readInt();
  99.          
  100.             switch (opcion) {
  101.                case 1:
  102.                   System.out.print("Introdueix el preu de la fila 1: ");
  103.                   fila1 = Keyboard.readInt();
  104.                   System.out.print("Introdueix el preu de la fila 2: ");
  105.                   fila2 = Keyboard.readInt();
  106.                   System.out.print("Introdueix el preu de la fila 3: ");
  107.                   fila3 = Keyboard.readInt();
  108.                   System.out.print("Introdueix el preu de la fila 4: ");
  109.                   fila4 = Keyboard.readInt();
  110.                   for (int i=0; i<21; i++) {
  111.                      if (i<=4||i>=17){
  112.                         vector[i][0]=fila1*0.15;
  113.                         vector[i][0]=fila1*0.15;
  114.                         vector[i][1]=fila2*0.15;
  115.                         vector[i][2]=fila3*0.15;
  116.                         vector[i][3]=fila4*0.15;
  117.                      }
  118.                      else if (i>=6 && i<=15) {
  119.                        
  120.                         vector[i][0]=fila1;
  121.                         vector[i][1]=fila2;
  122.                         vector[i][2]=fila3;
  123.                         vector[i][3]=fila4;
  124.                      }
  125.                      else if (i==5||i==16) {
  126.                         vector[i][0]=0;
  127.                         vector[i][1]=0;
  128.                         vector[i][2]=0;
  129.                         vector[i][3]=0;
  130.                      }
  131.                  
  132.                   }
  133.                
  134.                   break;
  135.                case 2:
  136.                   for (int i=0; i<21; i++) {
  137.                      if (i==5||i==16) {
  138.                         filas[i][0]=2;
  139.                         filas[i][1]=2;
  140.                         filas[i][2]=2;
  141.                         filas[i][3]=2;
  142.                      }
  143.                      else {
  144.                         filas[i][0]=0;
  145.                         filas[i][1]=0;
  146.                         filas[i][2]=0;
  147.                         filas[i][3]=0;
  148.                      }}
  149.                
  150.                
  151.                   break;
  152.                case 3:
  153.                   int num_entradas, fila, columna;
  154.                
  155.                   boolean salir=true;
  156.                   String zona="";
  157.                   while (salir==true) {
  158.                      System.out.print("Indica la zona on vols reservar E/C/D: ");
  159.                      zona=Keyboard.readString();
  160.                  
  161.                      System.out.print("Indica la fila on vols reservar (1-4): ");
  162.                      fila=Keyboard.readInt();
  163.                      System.out.print("Indica la columna on vols reservar(1-21): ");
  164.                      columna=Keyboard.readInt();
  165.                      System.out.print("Indica el numero d'entrades que vols reservar: ");
  166.                      num_entradas=Keyboard.readInt();
  167.                      zona = zona.toUpperCase();
  168.                      if (fila>4||columna>21) {
  169.                         System.out.println("Error. Los datos introducidos son incorrectos, vuelve a intentarlo\n");
  170.                         fila=1;
  171.                         salir=false;
  172.                      }
  173.                      if (zona.equals("E")|| zona.equals("C")|| zona.equals("D")){
  174.                         switch (zona){
  175.                            case "E":
  176.                               reservas(filas,vector, columna, num_entradas, fila);          
  177.                            
  178.                               break;
  179.                            case "C":
  180.                               reservas(filas,vector, columna, num_entradas, fila);
  181.                            
  182.                               break;
  183.                            case "D":
  184.                               reservas(filas,vector, columna, num_entradas, fila);
  185.                               break;
  186.                         }
  187.                      }
  188.                      else {
  189.                         System.out.println("La zona introducida no es correcta, vuelve a intentarlo");
  190.                         salir=false;
  191.                      
  192.                      
  193.                      }}
  194.                  
  195.                   break;
  196.                case 4:
  197.                   int e=0, c=0, d=0;
  198.                   double precio_total=0;
  199.                   for (int i=0; i<21;i++){
  200.                  
  201.                      if (filas[i][0]==1||filas[i][1]==1||filas[i][2]==1||filas[i][3]==1
  202.                                 &&i<=4){
  203.                         e++;
  204.                      }
  205.                      else if(filas[i][0]==1||filas[i][1]==1||filas[i][2]==1||filas[i][3]==1
  206.                                 &&i<=15&&i>=6){
  207.                         c++;
  208.                      }
  209.                      else if(filas[i][0]==1||filas[i][1]==1||filas[i][2]==1||filas[i][3]==1
  210.                                 &&i>=17) {
  211.                         d++;
  212.                      }
  213.                   }
  214.                   precio_total = ((e*vector[1][0])+(c*vector[8][0])+(d*vector[18][0]));
  215.                   DecimalFormat df = new DecimalFormat("#.##");
  216.                   System.out.println("El preu total de recaptació es de "+df.format(precio_total)+"€");
  217.                   break;
  218.                case 5:
  219.                
  220.                   Editar_Texto(filas,"c:\\temp\\resultats.txt");
  221.                
  222.                   break;
  223.                case 6:
  224.                   for (int i=0; i<21; i++) {
  225.                      System.out.println(mostrar_graficament(filas,0,1,i));
  226.                      System.out.println(mostrar_graficament(filas,1,2,i));
  227.                      System.out.println(mostrar_graficament(filas,2,3,i));
  228.                      System.out.println(mostrar_graficament(filas,3,4,i));
  229.                  
  230.                   }
  231.                   break;
  232.                case 0:
  233.                   blnexit=true;
  234.                   break;
  235.             }}
  236.       }}