Práctica de PRO2 - Otoño 2020 - Entrega intermedia X47628


Statement
 

pdf   zip   tar

html

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

Entrada

Una secuencia de instrucciones y datos que siguen el formato del enunciado de la práctica y del juego de pruebas público.

Salida

Una secuencia de resultados que siguen el formato del enunciado de la práctica y del juego de pruebas público.

Observación

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.

Public test cases
  • 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)
    
    
  • Information
    Author
    PRO2
    Language
    Spanish
    Official solutions
    Make
    User solutions
    Make