cine_cpp
TRANSCRIPT
![Page 1: cine_cpp](https://reader036.vdocumento.com/reader036/viewer/2022081801/5695cf341a28ab9b028d1106/html5/thumbnails/1.jpg)
7/23/2019 cine_cpp
http://slidepdf.com/reader/full/cinecpp 1/8
/******************************************************************** Módulo: Cine
** Descripción:* Módulo de gestión de películas de un cine.* Implementa los siguientes datos:
* - titulo: titulo de la película* - entradas: entradas vendidas (max. 2!
* - "ec#a: "ec#a de emisión* "ec#a.dia* "ec#a.mes* "ec#a.anno* - #orario: #ora de emisión de la película* #orario.#ora
* #orario.minuto* - genero: comedia$ drama$ terror o %&lica** ' las siguientes operaciones:* - altapelicula:alta de película
* - venderentradas: vender entradas* - listapeliculas: )istado de películas* - calendario: Mostrar calendario de películas**********************************************************************/include +stdio.#,include +ct'pe.#,include +stdli%.#,
include +string.#,include Cine.#include Calendario.#
int numeliculas 0int auxIndice 0
int gen01ipoC#arenero auxenero01ipo3ectorelicula vector4uxiliar01ipoCalendario calendario0int orden 0
/* rocedimiento: Dar alta a películas 3alidaciones: )a película a la 5ue se pretende dar alta no est6 'a gra%ada (titulo!
)a "ec#a ' #ora introducidas son v6lidas
7o existe ninguna película programada en la "ec#a solicitada 8l g&nero introducido se corresponde con uno de los 9 v6lidos*/
void 1ipoestion::Crearelicula(1ipo3ectorelicula vectoreliculas!
1ipoelicula pelicula0 Iniciali;arelicula( pelicula! 0 /*-- Compro%amos 5ue no tengamos guardadas 'a el n<mero m6ximo de películas --*/ i" (Compro%ar7umeliculas(!! s'stem(cls!0
print"( 4)14 D8 8)IC=)4>?n !0 print"( ?n !0 print"( ?n !0
/*-- Compro%amos 5ue el título no est& repetido --*/ do print"( 1itulo de la pelicula: !0
scan"( @AB?ns$pelicula.titulo !0
![Page 2: cine_cpp](https://reader036.vdocumento.com/reader036/viewer/2022081801/5695cf341a28ab9b028d1106/html5/thumbnails/2.jpg)
7/23/2019 cine_cpp
http://slidepdf.com/reader/full/cinecpp 2/8
![Page 3: cine_cpp](https://reader036.vdocumento.com/reader036/viewer/2022081801/5695cf341a28ab9b028d1106/html5/thumbnails/3.jpg)
7/23/2019 cine_cpp
http://slidepdf.com/reader/full/cinecpp 3/8
rocedimiento: Krdena3ectoreliculas Krdena vectoreliculas por "ec#a
*/void 1ipoestion::Krdena3ectoreliculas( 1ipo3ectorelicula vectoreliculas$ int auxIndice !
1ipoelicula auxelicula0 int aux auxIndice-O0
E#ile ((auxIndice,! GG (8sosterior(vectoreliculasAaux."ec#a$vectoreliculasAauxIndice."ec#a!!! auxelicula vectoreliculasAaux0 vectoreliculasAaux vectoreliculasAauxIndice0 vectoreliculasAauxIndice auxelicula0 auxIndice --0 aux --0
/*
Junción:Compro%arLorario Compro%ar 5ue la #ora introducida es v6lida 1rue: Jalse: Imprime mensaPe de error */
%ool 1ipoestion::Compro%arLorario( 1ipoLorario #orario! i" (#orario.#ora+ #orario.#ora , 2Q #orario.minuto + #orario.minuto , RS! print"( ?n)a #ora introducida no es correcta !0 print"( ?nIntrodu;ca un nuevo #orario?n !0 return "alse0 else
return true0 /* Junción: 1ituloFepetido Comprue%a si el título de la película est6 repetido
1rue: 4signa a la glo%al auxIndice la posición en el vector vectoreliculas del primer elemento li%re (titulo ! Jalse: Imprime mensaPe de error */
%ool 1ipoestion::1ituloFepetido( 1ipoelicula pelicula$ 1ipo3ectorelicula vectoreliculas! "or ( int i 0 i + maxeliculas0 iTT!
i" (strcmp (vectoreliculasAi.titulo$ ! !
auxIndice i0 /* osición del primer elemento del vector li%re */ return "alse0 else i" ( strcmp (pelicula.titulo$ vectoreliculasAi.titulo! ! print"( ?nUa #a dado alta a una pelicula con ese titulo !0
print"( ?nIntrodu;ca un nuevo titulo?n !0 return true0 return "alse0
/* Juncion:compro%ar7umeliculas Comprue%a si se #a re%asado el m6ximo de películas admitidas
*/ %ool 1ipoestion::Compro%ar7umeliculas(! i" (numeliculas + maxeliculas!
return true0
![Page 4: cine_cpp](https://reader036.vdocumento.com/reader036/viewer/2022081801/5695cf341a28ab9b028d1106/html5/thumbnails/4.jpg)
7/23/2019 cine_cpp
http://slidepdf.com/reader/full/cinecpp 4/8
else return "alse0
/* Junción: Jec#aKcupada Comprue%a si una "ec#a est6 ocupada
1rue: Imprime mensaPe de error Jalse:
*/ %ool 1ipoestion::Jec#aKcupada( 1ipoJec#a "ec#a$ 1ipo3ectorelicula vectoreliculas! "or ( int i 0 i + maxeliculas0 iTT! i" ((vectoreliculasAi."ec#a.dia "ec#a.dia! GG (vectoreliculasAi."ec#a.mes "ec#a.mes! GG(vectoreliculasAi."ec#a.anno "ec#a.anno!! print"( ?nUa #a' una película programada para esta "ec#a !0
print"( ?nIntrodu;ca una nueva "ec#a?n !0 return true0 return "alse0
/* Junción: Compro%arenero Comprue%a si el g&nero introducido es correcto. 1rue: Devuelve el int 5ue corresponde a la posición en el tipo enum del g&nero Jalse: Imprime mensaPe de error */
%ool 1ipoestion::Compro%arenero( 1ipoC#arenero genero$ int G gen ! i" (strcmp(genero$ comedia!! gen 0 return true0 else i" (strcmp(genero$ drama!! gen O0
return true0 else i" (strcmp(genero$ terror!! gen 20 return true0 else i" (strcmp(genero$ %elica!! gen Q0
return true0 else print"( ?n8l g&nero de%e ser comedia$ drama$ terror o %elica !0 print"( ?nIntrodu;ca un nuevo genero?n !0 return "alse0
/* rocedimiento: Iniciali;ar3ectoreliculas*/void 1ipoestion::Iniciali;ar3ectoreliculas(1ipo3ectorelicula vectoreliculas!
1ipoelicula pelicula0 Iniciali;arelicula( pelicula !0 "or (int i 0 i + maxeliculas0 iTT! /* strcp'(vectoreliculasAi.titulo$ !0 vectoreliculasAi.entradas 0 vectoreliculasAi."ec#a.dia 0
vectoreliculasAi."ec#a.mes 0 vectoreliculasAi."ec#a.anno 0 vectoreliculasAi.#orario.#ora 0
vectoreliculasAi.#orario.minuto 0 */ vectoreliculasAi pelicula0
![Page 5: cine_cpp](https://reader036.vdocumento.com/reader036/viewer/2022081801/5695cf341a28ab9b028d1106/html5/thumbnails/5.jpg)
7/23/2019 cine_cpp
http://slidepdf.com/reader/full/cinecpp 5/8
/* rocedimiento: Iniciali;arelicula rocedimiento para iniciali;ar el registro pelicula
*/void 1ipoestion::Iniciali;arelicula(1ipoelicula G pelicula! strcp'(pelicula.titulo$ !0 pelicula.entradas 0
pelicula."ec#a.dia 0 pelicula."ec#a.mes 0
pelicula."ec#a.anno 0 pelicula.#orario.#ora 0 pelicula.#orario.minuto 0/* rocedimiento: MostraCalendario
Muestra calendario de un mes/aNo dado como entradas >i no #a' películas programadas ese mes$ se muestra el calendario sin películas$ ' el emnsaPe V7o existen películas este mesV >i existen películas: Muestra 33 si 5uedan entradas por vender
Muestra WW si a"oro completo )ista las películas programadas$ las entradas restantes o 4"oro completo*/void 1ipoestion::MostrarCalendario(1ipo3ectorelicula vectoreliculas! int m 0 int a 0
s'stem(cls!0 print"( C4)87D4FIK D8 8)IC=)4>?n !0 print"( ?n !0 print"( ?n !0 do tr'
print"( ?nMes: !0 ""lus#(stdin!0 i" (scan"( @2d$ Gm ! ! t#roE true0 print"( ?n4nno: !0
""lus#(stdin!0 i" (scan"( @9d$ Ga ! ! t#roE true0 catc# (%ool e! m 0
a 0
E#ile (Hcalendario.8sCorrecta(O$ m$ a!!0 calendario.ImprimirCalendario( m$ a$ vectoreliculas !0 ImprimeeliculasMes( m$ a$ vectoreliculas!0
print"( ?n !0 s'stem(pause!0/* rocedimiento: ImprimeeliculasMes )istado de películas del mes ' aNo pasados como par6metros
*/void 1ipoestion::ImprimeeliculasMes( int mes$ int anno$ 1ipo3ectorelicula vectoreliculas ! %ool #a'eliculas "alse0
"or (int i0 i+maxeliculas0 iTT! i" ((vectoreliculasAi."ec#a.mes mes! GG (vectoreliculasAi."ec#a.anno anno!! Imprimeelicula( vectoreliculasAi $ O !0
#a'eliculas true0
![Page 6: cine_cpp](https://reader036.vdocumento.com/reader036/viewer/2022081801/5695cf341a28ab9b028d1106/html5/thumbnails/6.jpg)
7/23/2019 cine_cpp
http://slidepdf.com/reader/full/cinecpp 6/8
i" (H#a'eliculas!
print"( ?n?n7o existen peliculas este mes?n !0 /*
rocedimiento: )istareliculas )istado de películas del g&nero pasado como entrada
)ista genero$ título$ "ec#a$ #ora ' entradas vendidas >i se #an vendido todas$ muestra el mensaPe V4"oro compeltoV*/void 1ipoestion::)istareliculas( 1ipo3ectorelicula vectoreliculas ! %ool #a'eliculas "alse0 s'stem(cls!0
do gen 0 print"( ?nenero de la pelicula: !0 scan"( @s$ Gauxenero !0 E#ile (H(Compro%arenero( auxenero$ gen !!!0 /* asamos gen por re"erencia */
"or (int i0 i+maxeliculas0 iTT! i" (vectoreliculasAi.genero 1ipoenero(gen!! Imprimeelicula( vectoreliculasAi$ !0 #a'eliculas true0 i" (H#a'eliculas!
print"( ?n7o #a' peliculas del genero introducido?n !0 s'stem(pause!0/* rocedimiento: Imprimeelicula
Imprime$ en una línea: &nero 1ítulo Jec#a programada Lora programada 7<mero de entradas por vender o V4"oro completoV
ar6metro: orden: - rimer campo: g&nero O - rimeQr campo: "ec#a0*/void 1ipoestion::Imprimeelicula( 1ipoelicula pelicula$ int orden !
1ipoC#arenero gen0
sEitc# (int(pelicula.genero!! case : strcp'( gen$Comedia !0 %reaX0
case O: strcp'( gen$ Drama !0 %reaX0 case 2: strcp'( gen$1error !0 %reaX0
case Q: strcp'( gen$Yelica !0 %reaX0
i" (orden ! print"( ?n@s. @s. @2d-@2d-@2d. @2d:@2d #oras. $
gen$ pelicula.titulo$ pelicula."ec#a.dia$ pelicula."ec#a.mes$
![Page 7: cine_cpp](https://reader036.vdocumento.com/reader036/viewer/2022081801/5695cf341a28ab9b028d1106/html5/thumbnails/7.jpg)
7/23/2019 cine_cpp
http://slidepdf.com/reader/full/cinecpp 7/8
pelicula."ec#a.anno$ pelicula.#orario.#ora$ pelicula.#orario.minuto!0 else print"( ?n@2d-@2d-@2d @s. @s. @2d:@2d #oras. $
pelicula."ec#a.dia$ pelicula."ec#a.mes$ pelicula."ec#a.anno$ pelicula.titulo$ gen$ pelicula.#orario.#ora$ pelicula.#orario.minuto!0 i" ( pelicula.entradas + 2!
print"( @2d entradas vendidas.?n$ pelicula.entradas !0 else
print"( 4"oro Completo.?n !0
/* rocedimiento: 3ender8ntradas
3ender entradas. Feali;a las siguientes validaciones: 4l menos #a' una película gra%ada 8l titulo de la pelicula existe 8l n<mero de entradas solicitado est6 disponi%le
*/void 1ipoestion::3ender8ntradas(1ipo3ectorelicula vectoreliculas! 1ipoelicula pelicula0 Iniciali;arelicula( pelicula!0 /*-- Compro%amos 5ue #a'$ al menos$ una pelicula --*/ i" (strcmp( vectoreliculasA.titulo$! ! print"( ?n7o se pueden vender entradas. !0
print"( ?n7o #a' ninguna pelicula en cartelera?n !0 s'stem(pause!0 return0 s'stem(cls!0 print"( 387D8F 871F4D4>?n !0
print"( ?n !0 print"( ?n !0 /*-- Compro%amos 5ue exista película con el título introducido --*/ do print"( 1itulo de la pelicula: !0 scan"( @AB?ns$pelicula.titulo !0
E#ile (H1itulo8xiste( pelicula$ vectoreliculas !!0 /*-- >i est6n vendidas todas las entradas$ no pide entradas ' sale --*/ i" ( vectoreliculasAauxIndice.entradas 2 ! print"( ?n7o 5uedan entradas para esta pelicula?n !0 s'stem(pause!0 return0
/*-- Compro%amos el n<mero de entradas disponi%les --*/ do print"( ?n7umero de entradas a vender: !0 ""lus#(stdin!0
i" (scan"( @d$ Gpelicula.entradas ! ! pelicula.entradas 2O0 E#ile ( HCompro%ar8ntradas(pelicula$ vectoreliculas!!0 vectoreliculasAauxIndice.entradas vectoreliculasAauxIndice.entradas T pelicula.entradas0
/* Junción: 1itulo8xiste Junción 5ue comprue%a si el título de la película existe
1rue: asigna a la varia%le glo%al auxIndice la posición en el vector vectoreliculas de la pelciula %uscada Jalse: Imprime mensaPe con el error
*/
![Page 8: cine_cpp](https://reader036.vdocumento.com/reader036/viewer/2022081801/5695cf341a28ab9b028d1106/html5/thumbnails/8.jpg)
7/23/2019 cine_cpp
http://slidepdf.com/reader/full/cinecpp 8/8
%ool 1ipoestion::1itulo8xiste( 1ipoelicula pelicula$ 1ipo3ectorelicula vectoreliculas! "or ( int i 0 i + maxeliculas0 iTT! i" ( strcmp (vectoreliculasAi.titulo$ pelicula.titulo! !
auxIndice i0 return true0
print"( ?n7o #a' ninguna pelicula con ese titulo !0 print"( ?nIntrodu;ca un nuevo titulo?n !0
return "alse0/* Junción: Compro%ar8ntradas Comprue%a 5ue el n<mero de entradas solicitadas sea , ' 5ue est& dispon%le para esa película
1rue: la operación es correcta Jalse: Imprime mensaPe con el error */
%ool 1ipoestion::Compro%ar8ntradas(1ipoelicula pelicula$ 1ipo3ectorelicula vectoreliculas! int disponi%les 2 - vectoreliculasAauxIndice.entradas0
i" ((pelicula.entradas + ! ( pelicula.entradas , disponi%les!! print"( ?n7umero de entradas no disponi%le?n !0 print"( ?nZuedan @2d entradas disponi%les?n$ disponi%les !0 return "alse0 return true0
/* rocedimiento para comparar dos "ec#as. 1rue: )a primera es posterior a la segunda */ %ool 1ipoestion::8sosterior( const 1ipoJec#a "O$ const 1ipoJec#a "2! i" ("O.anno H "2.anno!
return ("O.anno , "2.anno!0 else i" ("O.mes H "2.mes! return ("O.mes , "2.mes!0 else return ("O.dia , "2.dia!0