Control PRO2 - Problema 2 (Tardor 2019)

Es disposa de 0k0\leq k beques que s’atorgaran als kk estudiants amb millors notes d’un conjunt. 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. En general, si un estudiant AA està en millors condicions que un altre BB per obtenir beca, direm que AA és “millor” o “més prioritari” que BB.

A més, tots els estudiants becats han de tenir una nota superior o igual a un cert valor donat mm, amb 0mEstudiant::nota_maxima()0 \leq m \leq \mbox{Estudiant::nota\_maxima}(); si el nombre d’estudiants que satisfan aquesta condició és més petit que kk, llavors les beques corresponents es quedaran sense atorgar.

S’han adaptat les classes Cjt_estudiants i Es­tu­diant, que heu vist al laboratori, per donar suport a la gestió de les beques (fixeu-vos a les noves operacions i camps). Noteu també que si volem llegir un conjunt, hem de proporcionar primer de tot els valors kk i mm.

En aquest exercici heu d’implementar dues de les operacions de la classe Cjt_estudiants, concretament

  void afegir_estudiant(const Estudiant &est, bool& b);
  /* Pre: el paràmetre implícit no està ple */
  /* Post: b = indica si el p.i. original conté un estudiant amb el dni d'est;
     si b = fals, s'ha afegit l'estudiant est al paràmetre implícit */

  int immediatament_millor(int i) const
  /* Pre: 0<=i<nest; vest[i] te nota */
  /* Post: el resultat és la posició en vest[0..nest-1] de l'estudiant
     immediatament millor que vest[i], si n'hi ha; -1 en cas contrari */

Observació

Heu de lliurar un fitxer solution.cc amb una implementació eficient de les operacions afegir_estudiant i immediatament_millor. Aquest fitxer no pot contenir la implementació d’altres operacions de la classe.

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. En particular, s’han d’evitar instruccions innecessàries (especialment bucles o crides a operacions costoses) i no es poden fer servir objectes auxiliars de les classes vector o Cjt_estudiants. 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.

Informació del problema

Autoria: Professors de PRO2

Generació: 2026-01-25T21:24:58.601Z

© Jutge.org, 2006–2026.
https://jutge.org