El objetivo en este examen será modificar dos aspectos de tu solución de la práctica. Concretamente deberás
cambiar la estrategia para elegir el mejor hueco para un contenedor
añadir una opción para imprimir cierta información sobre los huecos
Los detalles están descritos con precisión en el documento
enunciado_examen.pdf que forma parte del
archivo public.tar que puedes descargar en
esta página (icono del gatito). Verás que tendrás que modificar
elementos ya existentes en tu práctica, y tambien añadir una
funcionalidad nueva al main y operaciones nuevas a algunas clases. Está
permitido, incluso, modificar las clases básicas
Ubicacion y
Segmento, ya que determinadas soluciones se
pueden beneficiar de ello.
IMPORTANTE: Este problema de Jutge es el único canal disponible para realizar la entrega del examen de la práctica. Ten en cuenta que
Dispondrás de 2h 30 min (aprox) para la resolución del examen.
La nota del examen procederá exclusivamente de la corrección automática de tu mejor envío. No penaliza el número de intentos.
No superar ningún juego de pruebas conlleva un cero en la nota de este examen, al igual que si se aprecian indicios suficientes de copia.
Recomendamos que hagas una copia “limpia” de tu práctica en un subdirectorio aparte y en esa copia lleves a cabo todos los cambios.
Verifica que todos los módulos compilan sin errores, que el proceso
de montaje da un archivo ejecutable correcto y que el
program.exe pasa el juego de pruebas público
suministrado.
Comprueba que tu Makefile genera el fichero
program.exe y crea el fichero .tar para hacer
el envío al Jutge. Asegúrate que entregas el fichero .tar
con la solución del examen, no la solución original. No es necesario
incluir la carpeta con la documentación en Doxygen ni, en su caso, la de
la competencia tranversal.
El Jutge prueba tus entregas mediante 4 juegos de pruebas que, salvo por un comando nuevo, tienen la misma sintaxis que los de la práctica y menos requisitos de eficiencia.
sample: el juego de pruebas público
privat1: de todo un poco, sin fragmentacion
privat2: lo mismo que el anterior, pero más grande
privat3: de todo un poco, con fragmentacion
En un fichero llamado practica.tar debes
entregar
Los ficheros .hh y
.cc de las clases y el programa principal. No
incluyas ficheros .o y similares.
El fichero Makefile, que usaremos para
generar y probar el ejecutable
Ten en cuenta las siguientes restricciones:
El fichero que contiene el programa principal se ha de llamar
program.cc (recuerda actualizar el
main con la nueva opción
fragmentacion)
El Makefile ha de generar un ejecutable
llamado program.exe
Es importante que uses las opciones de compilación del Jutge de PRO2 (véase Documentation Compilers PRO2 en www.jutge.org)
No usar la opción -D_GLIBCXX_DEBUG o
usarla de forma incorrecta podrá ser penalizado
Produce el fichero practica.tar con la
instrucción Linux
tar -cvf practica.tar fitxer1 fitxer2 fitxer3 ...
desde el directorio/carpeta donde tengas los ficheros que vas a
entregar. Incluye esta instrucción en tu Makefile, de forma que el
.tar se pueda generar ejecutando
make practica.tar. Con eso reduciras 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. Se
han de incluir las clases básicas en
practica.tar, incluso si no se han
modificado.
Input
crea_terminal 3 6 4 num_hileras num_plazas num_pisos i BARTO 3 i MM0 1 i NU 1 i ABC 2 i OH 2 i SOS 1 i BARTO 1 r BERTO i QWE 3 area_almacenaje huecos fragmentacion i UBUNTU 2 i F25 3 i ZAS 2 i WERT 1 i X 3 i JAJA 1 i IKEA1 2 i GAGA 3 i VAX 2 i ZULU 1 i YAK 1 i DID 3 i EPS 2 i MANU 2 i HH23 3 i LLOLL 3 area_almacenaje huecos fragmentacion area_espera retira_contenedor SOS area_almacenaje huecos fragmentacion inserta_contenedor L 1 inserta_contenedor PAS 2 inserta_contenedor AMANDA 3 area_almacenaje huecos fragmentacion r OH area_almacenaje huecos fragmentacion area_espera donde MANU longitud MM0 contenedor_ocupa 0 0 0 contenedor_ocupa 1 1 1 contenedor_ocupa 2 5 2 i AA 3 i BB 3 i CC 3 i DD 3 area_espera contenedores fin
Output
#crea_terminal 3 6 4 #num_hileras 3 #num_plazas 6 #num_pisos 4 #i BARTO 3 <0,0,0> #i MM0 1 <0,3,0> #i NU 1 <0,4,0> #i ABC 2 <1,0,0> #i OH 2 <1,2,0> #i SOS 1 <0,5,0> #i BARTO 1 error: el contenedor ya existe #r BERTO error: el contenedor no existe #i QWE 3 <2,0,0> #area_almacenaje hilera 0 3 2 1 0 BBBMNS 012345 hilera 1 3 2 1 0 AAOO 012345 hilera 2 3 2 1 0 QQQ 012345 #huecos (<1,4,0>,2) (<2,3,0>,3) (<2,0,1>,3) (<1,0,1>,4) (<0,0,1>,6) #fragmentacion 0 #i UBUNTU 2 <1,4,0> #i F25 3 <2,3,0> #i ZAS 2 <0,0,1> #i WERT 1 <0,2,1> #i X 3 <0,3,1> #i JAJA 1 <1,0,1> #i IKEA1 2 <1,1,1> #i GAGA 3 <1,3,1> #i VAX 2 <2,0,1> #i ZULU 1 <2,2,1> #i YAK 1 <2,3,1> #i DID 3 <2,0,2> #i EPS 2 <2,4,1> #i MANU 2 <2,3,2> #i HH23 3 <0,0,2> #i LLOLL 3 <0,3,2> #area_almacenaje hilera 0 3 2 HHHLLL 1 ZZWXXX 0 BBBMNS 012345 hilera 1 3 2 1 JIIGGG 0 AAOOUU 012345 hilera 2 3 2 DDDMM 1 VVZYEE 0 QQQFFF 012345 #huecos (<2,5,2>,1) (<1,0,2>,6) (<2,0,3>,5) (<0,0,3>,6) #fragmentacion 1 #area_espera #retira_contenedor SOS #area_almacenaje hilera 0 3 2 HHH 1 ZZW 0 BBBMN 012345 hilera 1 3 2 XXXLLL 1 JIIGGG 0 AAOOUU 012345 hilera 2 3 2 DDDMM 1 VVZYEE 0 QQQFFF 012345 #huecos (<0,5,0>,1) (<0,3,1>,2) (<2,5,2>,1) (<0,0,3>,3) (<2,0,3>,5) (<1,0,3>,6) #fragmentacion 2 #inserta_contenedor L 1 <0,5,0> #inserta_contenedor PAS 2 <0,3,1> #inserta_contenedor AMANDA 3 <0,0,3> #area_almacenaje hilera 0 3 AAA 2 HHH 1 ZZWPP 0 BBBMNL 012345 hilera 1 3 2 XXXLLL 1 JIIGGG 0 AAOOUU 012345 hilera 2 3 2 DDDMM 1 VVZYEE 0 QQQFFF 012345 #huecos (<0,5,1>,1) (<2,5,2>,1) (<0,3,2>,2) (<2,0,3>,5) (<1,0,3>,6) #fragmentacion 2 #r OH #area_almacenaje hilera 0 3 AAA 2 HHH 1 ZZWPP 0 BBBMNL 012345 hilera 1 3 2 XXX 1 JLLL 0 AAIIUU 012345 hilera 2 3 GGG 2 DDDMM 1 VVZYEE 0 QQQFFF 012345 #huecos (<0,5,1>,1) (<1,4,1>,2) (<1,3,2>,1) (<2,5,2>,1) (<0,3,2>,2) (<2,3,3>,2) (<1,0,3>,3) #fragmentacion 3 #area_espera #donde MANU <2,3,2> #longitud MM0 1 #contenedor_ocupa 0 0 0 BARTO #contenedor_ocupa 1 1 1 LLOLL #contenedor_ocupa 2 5 2 #i AA 3 <1,0,3> #i BB 3 <-1,0,0> #i CC 3 <-1,0,0> #i DD 3 <-1,0,0> #area_espera DD(3) CC(3) BB(3) #contenedores AA(<1,0,3>,3) ABC(<1,0,0>,2) AMANDA(<0,0,3>,3) BARTO(<0,0,0>,3) BB(<-1,0,0>,3) CC(<-1,0,0>,3) DD(<-1,0,0>,3) DID(<2,0,2>,3) EPS(<2,4,1>,2) F25(<2,3,0>,3) GAGA(<2,0,3>,3) HH23(<0,0,2>,3) IKEA1(<1,2,0>,2) JAJA(<1,0,1>,1) L(<0,5,0>,1) LLOLL(<1,1,1>,3) MANU(<2,3,2>,2) MM0(<0,3,0>,1) NU(<0,4,0>,1) PAS(<0,3,1>,2) QWE(<2,0,0>,3) UBUNTU(<1,4,0>,2) VAX(<2,0,1>,2) WERT(<0,2,1>,1) X(<1,0,2>,3) YAK(<2,3,1>,1) ZAS(<0,0,1>,2) ZULU(<2,2,1>,1)