viernes, 22 de marzo de 2013

Ejercicio pseudocódigo venta entradas multi cine

En este ejercicio tenemos que crear un algoritmo en pseudocódigo para la venta de entradas en unos multi-cines.

El pseudocódigo esta creado usando PSeInt.

El enunciado del ejercicio es: 

Hay un multicine con 5 salas, y cada sala con 100 personas distribuidas en 20 asientos y 5 filas. 
Se solicita por teclado la sala y el programa nos indica el primer asiento libre y lo marca como ocupado, si en esa sala no hay asientos libres nos informa.


1 Proceso Cines
2     //Hay unos multicines con 4 salas,
3     //y cada sala con 100 personas distribuidas
4     //en 20 asientos y 5 filas.
5     //Si yo pido entrada para una sala, implementar
6     //un programa que me diga si hay sitio en la sala.
7     //Decir fila y asiento
8     Definir Cines como logico; //Verdadero es ocupado
9     Dimension Cines[4,5,20]; // 4 salas, 5 filas , 20 asientos
10    Definir S, F , A Como Entero;
11    Para S<-1 hasta 4 Hacer
12          Para F<-1 hasta 5 Hacer
13                Para A<-1 hasta 20 Hacer
14                      Cines[S,F,A] <- (Azar(2) = 1);
15                FinPara
16          FinPara
17    FinPara
18
19    Para S<-1 hasta 4 Hacer
20          Escribir "Sala : ", S;
21          Para F<-1 hasta 5 Hacer
22                Para A<-1 hasta 20 Hacer
23                      Si Cines[S,F,A] entonces //Verdadero ocupado
24                           Escribir " X " sin saltar;
25                      sino
26                           Escribir " . " sin saltar;
27                      FinSi
28                FinPara
29                Escribir "";
30          FinPara
31    FinPara
32
33    Definir Sala, Fila , Asiento Como Entero;
34    Definir SeguirBuscado como logico;
35    Repetir
36          Escribir "Dime a que sala queires ir??";
37          Leer Sala;
38          Si Sala <> 0 Entonces
39                Borrar Pantalla;
40                F<-1;
41                A<-1;
42                SeguirBuscado<-Verdadero;
43                Mientras SeguirBuscado
44                      si Cines[Sala,F,A] = Falso Entonces
45                           SeguirBuscado<-falso;
46                      sino
47                           A<-A+1;
48                           Si A > 20 entonces
49                                 F <- F + 1;
50                                 A <- 1;
51                                 si F > 5 entonces
52                                       SeguirBuscado<- Falso;
53                                 FinSi
54                           FinSi
55                      FinSi
56                FinMientras
57          Si F > 5 Entonces //sala ocupada
58                Escribir "Sala ocupada.";
59          Sino
60                Cines[Sala,F,A] <- Verdadero;
61                Escribir "Tu entrada es S:" , Sala , " F:", F, " A:",A;
62          FinSi
63                Para S<-1 hasta 4 Hacer
64                      Escribir "Sala : ", S;
65                      Para F<-1 hasta 5 Hacer
66                            Para A<-1 hasta 20 Hacer
67                                  Si Cines[S,F,A] entonces //Verdadero ocupado
68                                        Escribir " X " sin saltar;
69                                  sino
70                                        Escribir " . " sin saltar;
71                                  FinSi
72                            FinPara
73                            Escribir "";
74                      FinPara
75                FinPara
76          FinSi
77    Hasta Que Sala = 0
78 FinProceso


Veamos ahora otra variante del mismo algoritmo, en este caso nos permite vender varias entradas a la vez.



1 Proceso CinesVariasEntradas
2     //Hay unos multicines con 4 salas,
3     //y cada sala con 100 personas distribuidas
4     //en 20 asientos y 5 filas.
5     //Si yo pido un numeros de entradas para una sala, implementar
6     //un programa que me diga si hay sitio en la sala.
7     //Decir fila y asiento
8     Definir Cines como logico; //Verdadero es ocupado
9     Dimension Cines[4,5,20]; // 4 salas, 5 filas , 20 asientos
10    Definir S, F , A Como Entero;
11    Para S<-1 hasta 4 Hacer
12          Para F<-1 hasta 5 Hacer
13                Para A<-1 hasta 20 Hacer
14                      Cines[S,F,A] <- (Azar(2) = 1);
15                FinPara
16          FinPara
17    FinPara
18
19    Para S<-1 hasta 4 Hacer
20          Escribir "Sala : ", S;
21          Para F<-1 hasta 5 Hacer
22                Para A<-1 hasta 20 Hacer
23                      Si Cines[S,F,A] entonces //Verdadero ocupado
24                           Escribir " X " sin saltar;
25                      sino
26                           Escribir " . " sin saltar;
27                      FinSi
28                FinPara
29                Escribir "";
30          FinPara
31    FinPara
32    Definir Sala, NumEntradas, EntradasResevadas, Entradas Como Entero;
33    Dimension Entradas[15, 3]; // NumEntada(1)Sala (2)Fila (3)Asiento
34    Definir SeguirBuscado como logico;
35    Repetir
36          Escribir "Dime a que sala queires ir??";
37          Leer Sala;
38          Si Sala <> 0 Entonces
39                Escribir "Dime cuantas entradas max(15) ?";
40                Leer NumEntradas;
41
42                Borrar Pantalla;
43
44                EntradasResevadas <-0;
45                F<-1;
46                A<-1;
47                SeguirBuscado<-Verdadero;
48                Mientras SeguirBuscado
49                      si Cines[Sala,F,A] = Falso Entonces
50                            EntradasResevadas <- EntradasResevadas + 1;
51                            Entradas[EntradasResevadas,1 ]<-Sala;
52                            Entradas[EntradasResevadas,2 ]<-F;
53                            Entradas[EntradasResevadas,3 ]<-A;
54                            si EntradasResevadas = NumEntradas Entonces
55                                  SeguirBuscado<-falso;
56                            Sino
57                                  A<-A+1;
58                                  Si A > 20 entonces
59                                        F <- F + 1;
60                                        A <- 1;
61                                        si F > 5 entonces
62                                              SeguirBuscado<- Falso;
63                                       FinSi
64                                  FinSi
65                            FinSi
66                      sino
67                            A<-A+1;
68                                 Si A > 20 entonces
69                                  F <- F + 1;
70                                  A <- 1;
71                                  si F > 5 entonces
72                                        SeguirBuscado<- Falso;
73                                  FinSi
74                            FinSi
75                      FinSi
76                finMientras
77   
78
79
80
81                Si F > 5 Entonces //sala ocupada
82                      Escribir "Sala ocupada ";
83                Sino
84                      //Cines[Sala,F,A] <- Verdadero;
85                      Escribir "Tus Entradas:";
86                      Para S<-1 Hasta NumEntradas Hacer
87                            Sala <- Entradas[S,1 ];
88                            F<-Entradas[S,2 ];
89                            A<- Entradas[S,3 ];
90                           Cines[Sala,F,A] <- Verdadero;
91                            Escribir "Entrada ", S," en S:", Sala," F:", F, " A:",A;
92                      FinPara
93   
94                FinSi
95                Para S<-1 hasta 4 Hacer
96                      Escribir "Sala : ", S;
97                      Para F<-1 hasta 5 Hacer
98                            Para A<-1 hasta 20 Hacer
99                                  Si Cines[S,F,A] entonces //Verdadero ocupado
100                                 Escribir " X " sin saltar;
101                           sino
102                                 Escribir " . " sin saltar;
103                           FinSi
104                     FinPara
105                     Escribir "";
106               FinPara
107         FinPara
108   Fin  Si
109 Hasta Que Sala = 0
110
111
112
113 FinProceso


Una ultima versión esta vez usando sub procesos.


1 SubProceso InicializarCine(ElCine)
2     Definir S, F , A Como Entero;
3     Para S<-1 hasta 4 Hacer
4           Para F<-1 hasta 5 Hacer
5                 Para A<-1 hasta 20 Hacer
6                       ElCine[S,F,A] <- (Azar(2) = 1);
7                 FinPara
8           FinPara
9     FinPara
10 FinSubProceso
11 SubProceso MostrarCines(ElCine)
12          Definir S, F , A Como Entero;
13          Para S<-1 hasta 4 Hacer
14                Escribir "Sala : ", S;
15                Para F<-1 hasta 5 Hacer
16                      Para A<-1 hasta 20 Hacer
17                           Si ElCine[S,F,A] entonces //Verdadero ocupado
18                                 Escribir " X " sin saltar;
19                           sino
20                                 Escribir " . " sin saltar;
21                                       FinSi
22                            FinPara
23                      Escribir "";
24                FinPara
25          FinPara
26    FinSubProceso
27 SubProceso Ok <- ReservarEntradas(ElCine, Sala, CantEntradas, LasEntradas)
28          Definir Ok, SeguirBuscado como logico;
29          Definir EntradasResevadas, F, A como entero;
30          EntradasResevadas <-0;
31          F<-1;
32          A<-1;
33          SeguirBuscado<-Verdadero;
34          Mientras SeguirBuscado
35                si ElCine[Sala,F,A] = Falso Entonces
36                      EntradasResevadas <- EntradasResevadas + 1;
37                      LasEntradas[EntradasResevadas,1 ]<-Sala;
38                      LasEntradas[EntradasResevadas,2 ]<-F;
39                      LasEntradas[EntradasResevadas,3 ]<-A;
40                      si EntradasResevadas = CantEntradas Entonces
41                           SeguirBuscado<-falso;
42                      Sino
43                           A<-A+1;
44                                 Si A > 20 entonces
45                                       F <- F + 1;
46                                       A <- 1;
47                                       si F > 5 entonces
48                                             SeguirBuscado<- Falso;
49                                       FinSi
50                                 FinSi
51                      FinSi
52                sino
53                      A<-A+1;
54                      Si A > 20 entonces
55                           F <- F + 1;
56                           A <- 1;
57                           si F > 5 entonces
58                                 SeguirBuscado<- Falso;
59                           FinSi
60                      FinSi
61                FinSi
62          finMientras
63          Si F > 5 Entonces //sala ocupada
64                Ok<-Falso;
65          Sino
66                Ok<-Verdadero;
67          finsi
68 FinSubProceso
69 Proceso CinesVariasEntradas
70    //Hay unos multicines con 4 salas,
71    //y cada sala con 100 personas distribuidas
72    //en 20 asientos y 5 filas.
73    //Si yo pido un numeros de entradas para una sala, implementar
74    //un programa que me diga si hay sitio en la sala.
75    //Decir fila y asiento
76    Definir Cines como logico; //Verdadero es ocupado
77    Dimension Cines[4,5,20]; // 4 salas, 5 filas , 20 asientos
78    Definir S, F , A Como Entero;
79    InicializarCine(Cines);
80    MostrarCines(Cines);
81    Definir Sala, NumEntradas, Entradas Como Entero;
82    Dimension Entradas[15, 3]; // NumEntada(1)Sala (2)Fila (3)Asiento
83    Definir SeguirBuscado como logico;
84    Repetir
85          Escribir "Dime a que sala queires ir??";
86          Leer Sala;
87          Si Sala <> 0 Entonces
88                Escribir "Dime cuantas entradas max(15) ?";
89                Leer NumEntradas;
90                Borrar Pantalla;
91                Si ~ReservarEntradas(Cines, Sala, NumEntradas, Entradas) Entonces
92                      Escribir "Sala ocupada ";
93                Sino
94                      Escribir "Tus Entradas:";
95                      Para S<-1 Hasta NumEntradas Hacer
96                           Sala <- Entradas[S,1 ];
97                           F<-Entradas[S,2 ];
98                            A<- Entradas[S,3 ];
99                            Cines[Sala,F,A] <- Verdadero;
100                     Escribir "Entrada " , S, " en S:" , Sala , " F:", F, " A:",A;
101               FinPara
102         FinSi
103         MostrarCines(Cines);
104   FinSi
105 Hasta Que Sala = 0
106 FinProceso



No hay comentarios:

Publicar un comentario