Hem decidit estendre la classe Cjt_estudiants que heu vist al laboratori amb una nova funcionalitat que assigna automàticament un nombre limitat de becas als estudiants aprovats amb millors notes, i en cas d’empat als estudiants aprovats amb millors notes en ordre descendent per DNI. El nombre de becas assignades n_bec mai serà superior al nombre de becas disponibles MAX_BEC, ni al nombre d’estudiants aprovats na, i si na<MAX_BEC el nombre de becas asignades serà igual a na.
Per implementar eficientment aquesta funcionalitat
Tenint això en compte heu d’implementar eficientment el següent mètode privat:
void recalcular_pos_max_no_becat();
/* Pre: cert */
/* Post: i_max_no_becat és la posició a vest de l'estudiant no becat,
i aprovat amb millor nota, i en cas d'empat és la posició de
l'estudiant amb DNI més gran dels estudiants no becats, aprovats i
amb millor nota. Si tots els estudiants aprovats tenen beca o cap
estudiant està aprovat i_max_no_becat = -1 */
i el següent mètode públic:
void esborrar_estudiant(int x, bool& trobat);
/* Pre: cert */
/* Post: Si el paràmetre implícit original contenia un estudiant amb
DNI = x, trobat és true i el p.i. conté els mateixos estudiants
que l'original menys l'estudiant amb DNI = x; altrament, trobat
és false i el p.i. és igual a l'original. */
Observació
Heu de lliurar un fitxer solucio.cc amb una implementació eficient de les operacions recalcular_pos_max_no_becat i esborrar_estudiant que ha de tenir el següent format:
#include "Cjt_estudiants.hh"
void Cjt_estudiants::recalcular_pos_max_no_becat() {
... // codi de la implementació
}
void Cjt_estudiants::esborrar_estudiant(int x, bool& trobat) {
... // codi de la implementació
}
Copieu aquesta plantilla en el vostre solucio.cc i completeu-la. El vostre solucio.cc no pot contenir la implementació d’altres operacions de la classe.
A l’apartat Public files del Jutge us proveïm amb material addicional 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:
Valorarem positivament que la solució no contingui instruccions
(especialment bucles o crides a operacions costoses) ni objectes
(especialment vectors o conjunts) innecessaris, que no faci recorreguts
quan hauria de fer cercas, i que usi correctament les operacions
més eficients de la classe sempre que sigui possible. 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 correspon al fitxers entrada.txt i
sortida_correcta.txt de l’apartat Public files.