Volem una operació nova per fer-la servir al context de les classes Cjt_estudiants i Estudiant que heu vist al laboratori. Concretament, si tenim dos conjunts c1 i c2 que representen les notes de dos actes avaluatoris per a un mateix grup d’estudiantes, és a dir c1.consultar_iessim(i).consultar_DNI() = c2.consultar_iessim(i).consultar_DNI() per a tot i, 1 ≤ i ≤ c1.mida() = c2.mida() i tres double x,y,z tals que 0 ≤ x,y,z ≤ Estudiant::nota_maxima(), x ≤ y, volem crear un nou conjunt amb els estudiants tals que la seva nota a c1 tingui valor entre x i y, ambdós inclosos, i la seva nota a c2 sigui més gran o igual que z. A aquests estudiants els diem els reavaluables de c1 i c2 respecte a x,y,z i han de quedar sense nota en el nou conjunt.
Hem optat per afegir una nova operació que no pertany a cap classe amb la següent especificació:
void extreure_reavaluables(const Cjt_estudiants& c1, const Cjt_estudiants& c2,
double x, double y, double z, Cjt_estudiants& reava);
/* Pre: c1 i c2 contenen els mateixos estudiants, reava es buit,
0<=x,y,z<=Estudiant::nota_maxima(), x<=y */
/* Post: reava està format pels estudiants reavaluables de c1 i c2
respecte a x,y,z, tots sense nota */
Observació
Heu de lliurar un fitxer solution.cc amb una implementació eficient de l’operació extreure_reavaluables. Aquest fitxer no pot accedir als elements privats de les classes Cjt_estudiants i Estudiant. Òbviament, sí que pot fer servir les operacions públiques de les versions que us donem d’ambdues.
A l’apartat Public files del Jutge (icona del gatet) us proveïm amb una plantilla pel fitxer solution.cc que només cal completar. A més, trobareu material addicional, tot comprimit en un fitxer .tar. Podeu descomprimir aquest fitxer amb la comanda
tar -xvf nom_fitxer.tar
Aquest material addicional consisteix en els següents fitxers:
És fonamental que la solució sigui eficient en temps i espai. No es pot emprar cap estructura de dades que no hagi aparegut a les sessions 1-4 de laboratori.
Quan feu els enviaments el Jutge us indicarà quants jocs de proves passeu i de quin tipus (public o privat).
El joc de proves anomenat public s’explica al fitxer llegeixme.txt. El privat1 és molt semblant al public. Els privat2 i privat3 proven situacions especials.
Input
2 3 111 4.22 222 6.66 333 545 3 111 2.22 222 6.66 333 545 3.5 4.9 4 4 111 4 222 4.5 333 4 212 -1 4 111 1 222 4 333 6 212 5 3.5 4.9 4
Output
Reavaluables: 0 Reavaluables: 2 222 NP 333 NP