Este problema corresponde a la entrega intermedia de la práctica. Tened en cuenta que
esta no es la entrega definitiva de la práctica completa, ni siquiera es una entrega provisional de la práctica completa
en esta entrega se ha de proporcionar todo el código necesario (clases, programa principal y Makefile) para poder usar todas las funcionalidades de la práctica, pero solamente bajo estas condiciones
todas las inserciones de contenedores nuevos podrán realizarse en el área de almacenaje
todas las retiradas de contenedores existentes se realizarán en el área de almacenaje y el contenedor a retirar nunca estará obstruido por otros contenedores
como consecuencia de los dos puntos anteriores, el área de espera siempre estará vacía y por lo tanto nunca se necesitará intentar recolocar sus contenedores
no se ejecutará ningún comando
area_espera para escribir esta
en esta entrega no pedimos carpetas generadas mediante
doxygen, pero los ficheros de la 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
esta entrega no tendrá nota manual
Una secuencia de instrucciones y datos que siguen el formato del enunciado de la práctica y del juego de pruebas público.
Una secuencia de resultados que siguen el formato del enunciado de la práctica y del juego de pruebas público.
El Jutge prueba vuestras entregas mediante 4 juegos de pruebas:
sample: el juego de pruebas público
privat1: juego de pruebas con un poco de todo
privat2: juego de pruebas similar al anterior
privat3: juego de pruebas que hace énfasis en la 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). El Jutge
usará estas versiones para probar vuestras entregas.
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 contenedores retira_contenedor T retira_contenedor R inserta_contenedor T 2 area_almacenaje huecos contenedores crea_terminal 1 6 3 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 r D area_almacenaje huecos r H i I 1 i J 3 area_almacenaje huecos contenedores crea_terminal 3 3 4 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 area_almacenaje huecos contenedores retira_contenedor UBUNTU inserta_contenedor VAX 3 inserta_contenedor ZAS 2 retira_contenedor WERT retira_contenedor SOS area_almacenaje huecos 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) #contenedores R(<0,0,1>,1) T(<0,0,2>,2) U(<0,3,2>,1) W(<0,0,0>,3) X(<0,3,0>,2) Y(<0,1,1>,3) Z(<0,4,1>,1) #retira_contenedor T #retira_contenedor R #inserta_contenedor T 2 <0,1,2> #area_almacenaje hilera 0 2 TTU 1 YYYZ 0 WWWXX 01234 #huecos (<0,0,1>,1) (<0,4,2>,1) #contenedores T(<0,1,2>,2) U(<0,3,2>,1) W(<0,0,0>,3) X(<0,3,0>,2) Y(<0,1,1>,3) Z(<0,4,1>,1) #crea_terminal 1 6 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) #r D #area_almacenaje hilera 0 2 EHH 1 BBFFFG 0 AAACCC 012345 #huecos (<0,0,2>,1) (<0,4,2>,2) #r H #i I 1 <0,0,2> #i J 3 <0,2,2> #area_almacenaje hilera 0 2 IEJJJ 1 BBFFFG 0 AAACCC 012345 #huecos (<0,5,2>,1) #contenedores A(<0,0,0>,3) B(<0,0,1>,2) C(<0,3,0>,3) E(<0,1,2>,1) F(<0,2,1>,3) G(<0,5,1>,1) I(<0,0,2>,1) J(<0,2,2>,3) #crea_terminal 3 3 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> #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) #contenedores ABC(<0,1,0>,2) BARTO(<1,0,0>,3) F25(<1,0,2>,3) JAJA(<0,1,1>,1) MM0(<0,0,0>,1) NU(<0,0,1>,1) OH(<1,0,3>,2) QWE(<1,0,1>,3) SOS(<0,0,2>,1) UBUNTU(<2,0,0>,2) WERT(<0,0,3>,1) #retira_contenedor UBUNTU #inserta_contenedor VAX 3 <2,0,0> #inserta_contenedor ZAS 2 <2,0,1> #retira_contenedor WERT #retira_contenedor SOS #area_almacenaje hilera 0 3 2 1 NJ 0 MAA 012 hilera 1 3 OO 2 FFF 1 QQQ 0 BBB 012 hilera 2 3 2 1 ZZ 0 VVV 012 #huecos (<0,2,1>,1) (<1,2,3>,1) (<2,2,1>,1) (<0,0,2>,2) (<2,0,2>,2) #contenedores ABC(<0,1,0>,2) BARTO(<1,0,0>,3) F25(<1,0,2>,3) JAJA(<0,1,1>,1) MM0(<0,0,0>,1) NU(<0,0,1>,1) OH(<1,0,3>,2) QWE(<1,0,1>,3) VAX(<2,0,0>,3) ZAS(<2,0,1>,2)