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 de
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::vaciar(int h)
{
// 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ó
dejar_hueco
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 distribuir AAAA 3 distribuir BBBB 5 escribir 1 escribir 2 escribir 3 escribir 4 escribir 5 escribir 6 escribir 7 vaciar 3 4 vaciar 5 4 escribir 3 escribir 5 fin
Output
distribuir AAAA 3 0 distribuir BBBB 5 0 escribir 1 NULL escribir 2 NULL NULL NULL NULL escribir 3 NULL NULL NULL NULL NULL NULL NULL NULL NULL escribir 4 AAAA BBBB BBBB NULL NULL NULL escribir 5 AAAA BBBB NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL escribir 6 AAAA BBBB escribir 7 BBBB NULL NULL NULL vaciar 3 4 vaciar 5 4 escribir 3 NULL NULL NULL NULL NULL NULL NULL NULL NULL escribir 5 NULL NULL NULL NULL AAAA BBBB NULL NULL NULL NULL NULL NULL fin