Es disposa de 0≤ k beques que s’atorgaran als k estudiants amb millors notes d’un conjunt c. A més, tots els estudiants becats han de tenir una nota superior o igual a un cert valor donat m, amb 0 ≤ m ≤ Estudiant::nota_maxima(); si no existeixen k estudiants que satisfacin aquesta condició, llavors les beques corresponents es quedaran sense atorgar.
Per una altra part, si hi ha més d’un estudiant amb la mateixa nota, es prioritzaran per a les beques els estudiants amb DNI més gran.
S’han adaptat les classes Cjt_estudiants i Estudiant, que heu vist al laboratori, per donar suport a la gestió de les beques (fixeu-vos a les noves operacions). Noteu també que si volem llegir un conjunt, hem de proporcionar primer de tot els valors k i m.
En aquest exercici volem produir una nova operació, que no pertany a cap classe, per escriure els estudants becats d’un conjunt d’estudiants en ordre creixent per DNI.
Hem optat per la següent especificació:
void escriure_becats(const Cjt_estudiants& c) {
/* Pre: cert */
/* Post: s'han escrit pel canal estàndar de sortida els estudiants
de c amb beca en ordre ascendent per DNI */
Observació
Heu de lliurar un fitxer solution.cc amb una implementació eficient de l’operació escriure_becats. Aquest fitxer no pot accedir als elements privats de les classes. Òbviament, sí que pot fer-ne servir les operacions públiques. Resultaran d’especial interès les noves operacions de Cjt_estudiants i Estudiant.
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, hi 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
1 75 3 111 40.22 555 545 222 62.66 -2 -3 -5 -1 333 77 -1 554 91.5 -1 445 444 -2 -3 -5 -4 3 50 8 1111 40.22 2222 62 3333 545 4444 40.22 5555 63 6666 545 7777 40.22 8888 64 -1 4445 50.4 -2 -3 -5 -6
Output
Conjunt: 3 111 40.22 222 62.66 555 NP Estudiants amb beca: 0 Llistat becats: 0 Afegit 333 77 Afegit 554 91.5 Afegit 445 NP Conjunt: 6 111 40.22 222 62.66 333 77 445 NP 554 91.5 555 NP Estudiants amb beca: 1 El becat menys prioritari del conjunt es 554 91.5 Llistat becats: 1 554 91.5 Hem actualitzat el conjunt Afegit 4445 50.4 Conjunt: 9 1111 40.22 2222 62 3333 NP 4444 40.22 4445 50.4 5555 63 6666 NP 7777 40.22 8888 64 Estudiants amb beca: 3 El becat menys prioritari del conjunt es 2222 62 Llistat becats: 3 2222 62 5555 63 8888 64