Es disposa de beques que s’atorgaran als estudiants amb millors notes d’un conjunt . A més, tots els estudiants becats han de tenir una nota superior o igual a un cert valor donat , amb ; si no existeixen 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
i
.
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 */
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:
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.o: el fitxer
objecte de 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: les capçaleres de les
noves operacions, 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
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