Este problema permite hacer entregas de prueba de la práctica completa. Tened en cuenta que:
no es el canal para hacer la entrega definitiva de la práctica
el problema del Jutge de la entrega definitiva puede contener elementos o condiciones diferentes de los que aparecen en este problema
las entregas realizadas en este problema no serán tenidas en cuenta para la nota de la práctica
en esta entrega no pedimos carpetas generadas mediante
doxygen, pero los ficheros de las clases
pueden llevar todos los comentarios doxygen
que queráis; de hecho recomendamos que incluyáis las especificaciones de
todas las operaciones y que sean lo más definitivas posible
El Jutge prueba vuestras entregas mediante 4 juegos de pruebas:
sample: el juego de pruebas público
privat1: combinación de los juegos de pruebas de la entrega intermedia, con una situación nueva de eficiencia (gestión de huecos)
privat2: un poco de todo, salvo eficiencia
privat3: eficiencia
En un fichero llamado practica.tar tenéis
que entregar
Los ficheros .hh y .cc de las clases y el programa principal
El fichero Makefile, que usaremos para generar y probar el ejecutable
Tened en cuenta las siguientes restricciones:
El fichero que contiene el programa principal se ha de llamar
program.cc
El Makefile ha de generar un ejecutable llamado
program.exe
Es importante que uséis las opciones de compilación del Jutge de PRO2 (ved Documentation Compilers PRO2 a www.jutge.org)
No usar la opción -D_GLIBCXX_DEBUG o
usarla de forma incorrecta podrá ser penalizado
Producid el fichero practica.tar con la
instrucción Linux
tar -cvf practica.tar fitxer1 fitxer2 fitxer3 ...
desde el directorio/carpeta donde tengáis los ficheros que vais a
entregar. Incluid en vuestro Makefile una regla con esta instrucción, de
forma que el .tar se pueda generar ejecutando
make practica.tar. Con eso reduciréis el
riesgo de error en sucesivas entregas. El Jutge no acepta
.tar donde los ficheros estén dentro de
carpetas. Recomendamos usar GNU tar para
reducir el riesgo de que el fichero
practica.tar sea incompatible con el
Jutge.
Las clases básicas se adjuntan en la carpeta comprimida
public_files (icono del gatito) pero el Jutge
no tendrá acceso a estas versiones para probar vuestras entregas, tenéis
que subir las vuestras.
Input
crea_terminal 1 5 3 num_hileras num_plazas num_pisos inserta_contenedor W 3 inserta_contenedor X 2 inserta_contenedor R 1 inserta_contenedor Y 3 inserta_contenedor Z 1 inserta_contenedor T 2 inserta_contenedor Q 1 inserta_contenedor U 1 area_almacenaje inserta_contenedor U 1 retira_contenedor PEPE donde T longitud T donde NOESTA longitud NOESTA contenedor_ocupa 0 2 1 contenedor_ocupa 0 4 2 contenedor_ocupa 1 0 0 retira_contenedor Q area_almacenaje huecos area_espera retira_contenedor X area_almacenaje huecos area_espera contenedores crea_terminal 1 6 3 num_hileras num_plazas num_pisos i A 3 i B 2 i C 3 i D 1 i E 1 i F 3 i G 1 i H 2 area_almacenaje huecos area_espera r A area_almacenaje huecos area_espera r E r C area_almacenaje huecos area_espera i I 1 i J 3 i K 2 area_almacenaje huecos area_espera i L 2 i M 3 i N 2 i Q 2 i P 3 area_almacenaje area_espera r N area_espera contenedores crea_terminal 3 3 4 num_hileras num_plazas num_pisos i MM0 1 i NU 1 i SOS 1 i BARTO 3 i ABC 2 i WERT 1 i QWE 3 i F25 3 i JAJA 1 i OH 2 i UBUNTU 2 i ZAS 3 i X 3 i IKEA1 3 i GAGA 3 i VAX 3 area_almacenaje huecos area_espera retira_contenedor UBUNTU inserta_contenedor L 1 inserta_contenedor PAS 2 area_almacenaje huecos area_espera donde PAS longitud PAS contenedor_ocupa 0 0 0 contenedor_ocupa 1 1 1 contenedor_ocupa 2 2 2 contenedores fin
Output
#crea_terminal 1 5 3 #num_hileras 1 #num_plazas 5 #num_pisos 3 #inserta_contenedor W 3 <0,0,0> #inserta_contenedor X 2 <0,3,0> #inserta_contenedor R 1 <0,0,1> #inserta_contenedor Y 3 <0,1,1> #inserta_contenedor Z 1 <0,4,1> #inserta_contenedor T 2 <0,0,2> #inserta_contenedor Q 1 <0,2,2> #inserta_contenedor U 1 <0,3,2> #area_almacenaje hilera 0 2 TTQU 1 RYYYZ 0 WWWXX 01234 #inserta_contenedor U 1 error: el contenedor ya existe #retira_contenedor PEPE error: el contenedor no existe #donde T <0,0,2> #longitud T 2 #donde NOESTA <-1,-1,-1> #longitud NOESTA error: el contenedor no existe #contenedor_ocupa 0 2 1 Y #contenedor_ocupa 0 4 2 #contenedor_ocupa 1 0 0 error: ubicacion fuera de rango #retira_contenedor Q #area_almacenaje hilera 0 2 TT U 1 RYYYZ 0 WWWXX 01234 #huecos (<0,2,2>,1) (<0,4,2>,1) #area_espera #retira_contenedor X #area_almacenaje hilera 0 2 Z 1 RUYYY 0 WWWTT 01234 #huecos (<0,1,2>,4) #area_espera #contenedores R(<0,0,1>,1) T(<0,3,0>,2) U(<0,1,1>,1) W(<0,0,0>,3) Y(<0,2,1>,3) Z(<0,0,2>,1) #crea_terminal 1 6 3 #num_hileras 1 #num_plazas 6 #num_pisos 3 #i A 3 <0,0,0> #i B 2 <0,0,1> #i C 3 <0,3,0> #i D 1 <0,0,2> #i E 1 <0,1,2> #i F 3 <0,2,1> #i G 1 <0,5,1> #i H 2 <0,2,2> #area_almacenaje hilera 0 2 DEHH 1 BBFFFG 0 AAACCC 012345 #huecos (<0,4,2>,2) #area_espera #r A #area_almacenaje hilera 0 2 BB E 1 HHD G 0 FFFCCC 012345 #huecos (<0,2,2>,1) (<0,3,1>,2) #area_espera #r E #r C #area_almacenaje hilera 0 2 BBG 1 HHD 0 FFF 012345 #huecos (<0,3,0>,3) #area_espera #i I 1 <0,3,0> #i J 3 <-1,0,0> #i K 2 <0,4,0> #area_almacenaje hilera 0 2 BBG 1 HHDJJJ 0 FFFIKK 012345 #huecos (<0,3,2>,3) #area_espera #i L 2 <0,3,2> #i M 3 <-1,0,0> #i N 2 <-1,0,0> #i Q 2 <-1,0,0> #i P 3 <-1,0,0> #area_almacenaje hilera 0 2 BBGLL 1 HHDJJJ 0 FFFIKK 012345 #area_espera P(3) Q(2) N(2) M(3) #r N #area_espera P(3) Q(2) M(3) #contenedores B(<0,0,2>,2) D(<0,2,1>,1) F(<0,0,0>,3) G(<0,2,2>,1) H(<0,0,1>,2) I(<0,3,0>,1) J(<0,3,1>,3) K(<0,4,0>,2) L(<0,3,2>,2) M(<-1,0,0>,3) P(<-1,0,0>,3) Q(<-1,0,0>,2) #crea_terminal 3 3 4 #num_hileras 3 #num_plazas 3 #num_pisos 4 #i MM0 1 <0,0,0> #i NU 1 <0,0,1> #i SOS 1 <0,0,2> #i BARTO 3 <1,0,0> #i ABC 2 <0,1,0> #i WERT 1 <0,0,3> #i QWE 3 <1,0,1> #i F25 3 <1,0,2> #i JAJA 1 <0,1,1> #i OH 2 <1,0,3> #i UBUNTU 2 <2,0,0> #i ZAS 3 <-1,0,0> #i X 3 <-1,0,0> #i IKEA1 3 <-1,0,0> #i GAGA 3 <-1,0,0> #i VAX 3 <-1,0,0> #area_almacenaje hilera 0 3 W 2 S 1 NJ 0 MAA 012 hilera 1 3 OO 2 FFF 1 QQQ 0 BBB 012 hilera 2 3 2 1 0 UU 012 #huecos (<0,1,2>,1) (<0,2,1>,1) (<1,2,3>,1) (<2,2,0>,1) (<2,0,1>,2) #area_espera VAX(3) GAGA(3) IKEA1(3) X(3) ZAS(3) #retira_contenedor UBUNTU #inserta_contenedor L 1 <0,1,2> #inserta_contenedor PAS 2 <-1,0,0> #area_almacenaje hilera 0 3 W 2 SL 1 NJ 0 MAA 012 hilera 1 3 OO 2 FFF 1 QQQ 0 BBB 012 hilera 2 3 XXX 2 III 1 GGG 0 VVV 012 #huecos (<0,1,3>,1) (<0,2,1>,1) (<1,2,3>,1) #area_espera PAS(2) ZAS(3) #donde PAS <-1,0,0> #longitud PAS 2 #contenedor_ocupa 0 0 0 MM0 #contenedor_ocupa 1 1 1 QWE #contenedor_ocupa 2 2 2 IKEA1 #contenedores ABC(<0,1,0>,2) BARTO(<1,0,0>,3) F25(<1,0,2>,3) GAGA(<2,0,1>,3) IKEA1(<2,0,2>,3) JAJA(<0,1,1>,1) L(<0,1,2>,1) MM0(<0,0,0>,1) NU(<0,0,1>,1) OH(<1,0,3>,2) PAS(<-1,0,0>,2) QWE(<1,0,1>,3) SOS(<0,0,2>,1) VAX(<2,0,0>,3) WERT(<0,0,3>,1) X(<2,0,3>,3) ZAS(<-1,0,0>,3)