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
}
Una seqüència d’instruccions seguint el format de l’enunciat de l’examen i del joc de proves públic.
El seu resultat seguint el format de l’enunciat de l’examen i del joc de proves públic.
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.
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