Control - Problema 1 (Tardor 2019) X20155


Statement
 

pdf   zip   tar

Es disposa de 0k0\leq k beques que s’atorgaran als kk estudiants amb millors notes d’un conjunt cc. 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 no existeixen kk 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 Es­tu­diant, 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 kk i mm.

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ó es­criu­re_be­cats. 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 Es­tu­diant.

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.

Public test cases
  • 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
    
    
  • Information
    Author
    Professors de PRO2
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++