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 tres double x,y,z tals que
,
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 */
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:
Cjt_estudiants.hh: les capçaleres i
l’especificació Pre/Post de les operacions públiques i privades de la
classe Cjt_estudiants, així com la definició dels seus
atributs.
Cjt_estudiants.cc: la implementació de
totes de les operacions de la nova versió de la classe
Cjt_estudiants.
Estudiant.hh: l’especificació de la
classe Estudiant i la definició dels seus
atributs.
Estudiant.cc: la implementació dels
mètodes de la classe Estudiant.
pro2.cc: un programa principal que
podeu fer servir per provar la solució d’aquest exercici.
llegeixme.txt: instruccions per a
generar i provar l’executable del programa
pro2.
sample.inp: entrada del joc de proves
públic
sample.cor: sortida del joc de proves
públic
solution.cc: plantilla explicada
previament
solution.hh: la capçalera de la nova
operació, per fer #include
É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