Control - Problema 1 (Tardor 2019) X20155


Statement
 

pdf   zip   tar

html

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:

  • 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++