Examen Práctica de PRO2 - Primavera 2018 - Turno 4 X28107


Statement
 

pdf   zip   tar

html

Aquest és un problema del jutge per fer lliuraments de l’examen de la pràctica

  • Aquest examen dura una hora i quaranta-cinc minuts
  • No es corregirà cap lliurament que no compili
  • L’examen es fa sense apunts
  • El 50% de la nota és de l’execució, l’altre 50% de la correcció manual
  • Es corregirà el darrer enviament amb més jocs de proves correctes
  • En cas de no passar cap joc de proves es farà la correcció manual del darrer enviament que compili
  • El nombre d’enviaments no fa baixar la nota

Descarregueu els fitxers públics per obtenir el material:

  • enunciat d’aquest examen
  • enunciat de la pràctica
  • especificació de BinTree
  • fitxer llegeixme.txt
  • codi ja implementat
  • fitxer Makefile
  • joc de proves públic

Ara us resumim els detalls més importants de la implementació que us donem.

Els atributs d’un objecte Almacen son:

  BinTree<int> a;
  vector<Sala> salas;
  int n_salas;

i el seu invariant de representació és:

  a te n_salas nodes
  cada node d'a te un valor entre 1 i n_salas
  tots els valors entre 1 i n_salas apareixen en algun node d'a
  salas te n_salas elements
  salas[i] representa la colocacio dels productes de la sala amb id i+1

Els atributs d’un objecte Sala són:

  int pos;
  vector<string> estanteria;

pos és el nombre de posicions d’estanteria.

Haureu de fer servir una operació ja implementada de Sala:

int poner_items(string & id_p,int c_p)
\\ pre : c_p >0
\\ pos : s'han posat a estanteria fins a c_p vegades id_p a les posicions on hi havia "NULL", començant per l'esquerra
         el resultat ens diu quants id_p no han capigut

Després de llegir l’enunciat de l’examen atentament, copieu aquesta plantilla en un fitxer anomenat solution.cc i completeu-la. Per solucionar el problema no és necessari afegir altres operacions a solution.cc, però es poden afegir si voleu. Teniu en compte que aquestes operacions no poden pertànyer a cap classe perque no heu de modificar els fitxers .hh ja que el jutge farà servir els fitxers que us donem i el vostre fitxer solution.cc.

// Poseu aqui el vostre nom d'usuari

#include "Sala.hh"
#include "Almacen.hh"

int Almacen::distribuir_aux(const BinTree<int> & a, vector<Sala> & salas, string & id_p, int cantidad)
{
 // Afegiu aqui el vostre codi
}

void Sala::compactar()
{
 // Afegiu aqui el vostre codi
}

Entrada

Una seqüència d’instruccions seguint el format de l’enunciat de l’examen i del joc de proves públic.

Sortida

El seu resultat seguint el format de l’enunciat de l’examen i del joc de proves públic.

Observació

El Jutge prova el vostre lliurament mitjançant 4 jocs de proves:

  • sample: el joc de proves públic.
  • privat1: joc de proves privat que fa èmfasi en la nova operació compactar
  • privat2: joc de proves privat que fa èmfasi en la nova versió de l’operació distribuir
  • privat3: joc de proves privat que fa una mica de tot

Heu de lliurar un fitxer solucio.cc amb una implementació eficient de les operacions que es demanen.

Public test cases
  • Input

    7
    1 2 4 0 0 5 0 0 3 6 0 0 7 0 0
    1
    4
    9
    6
    12
    2
    4
    escribir 1
    escribir 2
    escribir 3
    escribir 4
    escribir 5
    escribir 6
    escribir 7
    poner_items 5 XW23 10
    poner_items 5 ZZZZ 2
    escribir 5
    distribuir AS34 40
    escribir 1
    escribir 2
    escribir 3
    escribir 4
    escribir 5
    escribir 6
    escribir 7
    quitar_items 7 ASDF 10
    quitar_items 7 XW23 10
    escribir 7
    quitar_items 7 AS34 1
    escribir 7
    poner_items 7 ZZZZ 5
    escribir 7
    quitar_items 5 XW23 4
    escribir 5
    compactar 5
    escribir 5
    fin
    

    Output

    escribir 1
      NULL
    escribir 2
      NULL NULL NULL NULL
    escribir 3
      NULL NULL NULL NULL NULL NULL NULL NULL NULL
    escribir 4
      NULL NULL NULL NULL NULL NULL
    escribir 5
      NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
    escribir 6
      NULL NULL
    escribir 7
      NULL NULL NULL NULL
    poner_items 5 XW23 10
      0
    poner_items 5 ZZZZ 2
      0
    escribir 5
      XW23 XW23 XW23 XW23 XW23 XW23 XW23 XW23 XW23 XW23 ZZZZ ZZZZ
    distribuir AS34 40
      14
    escribir 1
      AS34
    escribir 2
      AS34 AS34 AS34 AS34
    escribir 3
      AS34 AS34 AS34 AS34 AS34 AS34 AS34 AS34 AS34
    escribir 4
      AS34 AS34 AS34 AS34 AS34 AS34
    escribir 5
      XW23 XW23 XW23 XW23 XW23 XW23 XW23 XW23 XW23 XW23 ZZZZ ZZZZ
    escribir 6
      AS34 AS34
    escribir 7
      AS34 AS34 AS34 AS34
    quitar_items 7 ASDF 10
      10
    quitar_items 7 XW23 10
      10
    escribir 7
      AS34 AS34 AS34 AS34
    quitar_items 7 AS34 1
      0
    escribir 7
      NULL AS34 AS34 AS34
    poner_items 7 ZZZZ 5
      4
    escribir 7
      ZZZZ AS34 AS34 AS34
    quitar_items 5 XW23 4
      0
    escribir 5
      NULL NULL NULL NULL XW23 XW23 XW23 XW23 XW23 XW23 ZZZZ ZZZZ
    compactar 5
    escribir 5
      ZZZZ ZZZZ XW23 XW23 XW23 XW23 XW23 XW23 NULL NULL NULL NULL
    fin
    
  • Information
    Author
    PR02
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++