Examen de la práctica de PRO2 - Otoño 2020 - turno 1 X63088


Statement
 

pdf   zip   tar

html

El objetivo en este examen será modificar dos aspectos de tu solución de la práctica. Concretamente deberás

  1. cambiar la estrategia para elegir el mejor hueco para un contenedor
  2. añadir una opción para imprimir cierta información del área de almacenamiento

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.

Observación 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 area_almacenaje2
  • privat2: lo mismo que al anterior, pero más grande
  • privat3: de todo un poco, con area_almacenaje2

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 area_almacenaje2)
  • 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.

Public test cases
  • 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_almacenaje2
    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
    area_espera
    retira_contenedor SOS
    area_almacenaje
    huecos
    inserta_contenedor L 1
    inserta_contenedor PAS 2
    inserta_contenedor AMANDA 3
    area_almacenaje
    huecos
    r X
    area_almacenaje2
    huecos
    area_espera
    donde MANU
    longitud MM0
    contenedor_ocupa 0 0 0
    contenedor_ocupa 1 1 1
    contenedor_ocupa 2 2 2
    i ZZ 3
    i YY 3
    i XX 2
    i WW 3
    i VV 3
    i UU 2
    i TT 3
    i SS 3
    i RR 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
    <0,0,1>
    #i OH 2
    <0,0,2>
    #i SOS 1
    <0,5,0>
    #i BARTO 1
    error: el contenedor ya existe
    #r BERTO
    error: el contenedor no existe
    #i QWE 3
    <0,2,1>
    #area_almacenaje2
    hilera 0
    3   ++++
    2 OO   +
    1 AAQQQ 
    0 BBBMNS
      012345
    
    hilera 1
    3 ++++++
    2 ++++++
    1 ++++++
    0       
      012345
    
    hilera 2
    3 ++++++
    2 ++++++
    1 ++++++
    0       
      012345
    
    #i UBUNTU 2
    <0,0,3>
    #i F25 3
    <0,2,2>
    #i ZAS 2
    <0,2,3>
    #i WERT 1
    <0,5,1>
    #i X 3
    <1,0,0>
    #i JAJA 1
    <0,5,2>
    #i IKEA1 2
    <0,4,3>
    #i GAGA 3
    <1,3,0>
    #i VAX 2
    <1,0,1>
    #i ZULU 1
    <1,0,2>
    #i YAK 1
    <1,1,2>
    #i DID 3
    <1,2,1>
    #i EPS 2
    <1,0,3>
    #i MANU 2
    <1,2,2>
    #i HH23 3
    <2,0,0>
    #i LLOLL 3
    <2,3,0>
    #area_almacenaje
    hilera 0
    3 UUZZII
    2 OOFFFJ
    1 AAQQQW
    0 BBBMNS
      012345
    
    hilera 1
    3 EE    
    2 ZYMM  
    1 VVDDD 
    0 XXXGGG
      012345
    
    hilera 2
    3       
    2       
    1       
    0 HHHLLL
      012345
    
    #huecos
    (<1,5,1>,1)
    (<1,4,2>,1)
    (<1,2,3>,2)
    (<2,0,1>,6)
    
    #area_espera
    
    #retira_contenedor SOS
    #area_almacenaje
    hilera 0
    3 UUZZ  
    2 OOFFF 
    1 AAQQQJ
    0 BBBMNW
      012345
    
    hilera 1
    3 EEII  
    2 ZYMM  
    1 VVDDD 
    0 XXXGGG
      012345
    
    hilera 2
    3       
    2       
    1       
    0 HHHLLL
      012345
    
    #huecos
    (<0,5,2>,1)
    (<0,4,3>,1)
    (<1,5,1>,1)
    (<1,4,2>,1)
    (<2,0,1>,6)
    
    #inserta_contenedor L 1
    <0,5,2>
    #inserta_contenedor PAS 2
    <0,4,3>
    #inserta_contenedor AMANDA 3
    <2,0,1>
    #area_almacenaje
    hilera 0
    3 UUZZPP
    2 OOFFFL
    1 AAQQQJ
    0 BBBMNW
      012345
    
    hilera 1
    3 EEII  
    2 ZYMM  
    1 VVDDD 
    0 XXXGGG
      012345
    
    hilera 2
    3       
    2       
    1 AAA   
    0 HHHLLL
      012345
    
    #huecos
    (<1,5,1>,1)
    (<1,4,2>,1)
    (<2,3,1>,3)
    (<2,0,2>,3)
    
    #r X
    #area_almacenaje2
    hilera 0
    3 UUZZPP
    2 OOFFFL
    1 AAQQQJ
    0 BBBMNW
      012345
    
    hilera 1
    3 VV +++
    2 IIZ  +
    1 MMYEE 
    0 DDDGGG
      012345
    
    hilera 2
    3 ++++++
    2    +++
    1 AAA   
    0 HHHLLL
      012345
    
    #huecos
    (<1,5,1>,1)
    (<1,2,3>,1)
    (<1,3,2>,2)
    (<2,3,1>,3)
    (<2,0,2>,3)
    
    #area_espera
    
    #donde MANU
    <1,0,1>
    #longitud MM0
    1
    #contenedor_ocupa 0 0 0
    BARTO
    #contenedor_ocupa 1 1 1
    MANU
    #contenedor_ocupa 2 2 2
    
    #i ZZ 3
    <2,3,1>
    #i YY 3
    <2,0,2>
    #i XX 2
    <1,3,2>
    #i WW 3
    <1,2,3>
    #i VV 3
    <2,3,2>
    #i UU 2
    <2,0,3>
    #i TT 3
    <2,2,3>
    #i SS 3
    <-1,0,0>
    #i RR 3
    <-1,0,0>
    #area_espera
    RR(3)
    SS(3)
    
    #contenedores
    ABC(<0,0,1>,2)
    AMANDA(<2,0,1>,3)
    BARTO(<0,0,0>,3)
    DID(<1,0,0>,3)
    EPS(<1,3,1>,2)
    F25(<0,2,2>,3)
    GAGA(<1,3,0>,3)
    HH23(<2,0,0>,3)
    IKEA1(<1,0,2>,2)
    JAJA(<0,5,1>,1)
    L(<0,5,2>,1)
    LLOLL(<2,3,0>,3)
    MANU(<1,0,1>,2)
    MM0(<0,3,0>,1)
    NU(<0,4,0>,1)
    OH(<0,0,2>,2)
    PAS(<0,4,3>,2)
    QWE(<0,2,1>,3)
    RR(<-1,0,0>,3)
    SS(<-1,0,0>,3)
    TT(<2,2,3>,3)
    UBUNTU(<0,0,3>,2)
    UU(<2,0,3>,2)
    VAX(<1,0,3>,2)
    VV(<2,3,2>,3)
    WERT(<0,5,0>,1)
    WW(<1,2,3>,3)
    XX(<1,3,2>,2)
    YAK(<1,2,1>,1)
    YY(<2,0,2>,3)
    ZAS(<0,2,3>,2)
    ZULU(<1,2,2>,1)
    ZZ(<2,3,1>,3)
    
    
  • Information
    Author
    PRO2
    Language
    Spanish
    Official solutions
    Make
    User solutions
    Make