Aquest és un problema del jutge per fer lliuraments de l’examen de la pràctica
Descarregueu els fitxers públics per obtenir el material:
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:
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