Control - Torn 1 - Problema 2 (Primavera 2019) X71464


Statement
 

pdf   zip   tar

html

Volem una operació nova per fer-la servir al context de les classes Cjt_estudiants i Estudiant que heu vist al laboratori. Concretament, volem poder escriure conjunts d’estudiants en ordre decreixent per nota. En cas d’empat, escriurem primer els estudiants amb DNI més petit. Els estudiants sense nota es tracten com si la seva nota fos -1.

Hem optat per afegir dues noves operacions que no pertanyen a cap classe amb la següent especificació:

void escriure_nota_decr(const Cjt_estudiants& c) {
  /* Pre: cert */
  /* Post: s'han escrit pel canal estàndar de sortida els estudiants
     de c en ordre descendent de nota i, en cas d'empat, en ordre
     ascendent per DNI */

bool nota_decr(const Estudiant& a, const Estudiant& b) {
  /* Pre: cert */
  /* Post: el resultat es cert si la nota d'a es mes gran que la de b
     o, si son iguals, si el dni d'a es mes petit que el de b */

Observació

Heu de lliurar un fitxer solution.cc amb una implementació eficient de les operacions escriure_nota_decr i nota_decr. Aquest fitxer no pot accedir als elements privats de les classes Cjt_estudiants i Estudiant. Òbviament, sí que pot fer servir les operacions públiques de les versions que us donem d’ambdues.

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, 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.cc: 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. Sí que es pot fer servir un vector auxiliar i l’operació sort.
 
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

    0
    -3
    -4
    -1 111 4.22
    -1 222 6.66
    -1 444 545
    -3
    -4
    -1 333 5.02
    -3
    -4
    -2 333
    -1 333 4.13
    -3
    -4
    -2 222
    -3
    -4
    -1 555 9.5
    -1 445 44
    -3
    -4
    -1 445 4.4
    -1 666 12
    -2 333
    -2 777
    -3
    -4
    -5

    Output

    Conjunt:
    0
    
    Conjunt per nota decreixent:
    
    Conjunt:
    3
    111 4.22
    222 6.66
    444 NP
    
    Conjunt per nota decreixent:
    222 6.66
    111 4.22
    444 NP
    
    Conjunt:
    4
    111 4.22
    222 6.66
    333 5.02
    444 NP
    
    Conjunt per nota decreixent:
    222 6.66
    333 5.02
    111 4.22
    444 NP
    
    Conjunt:
    4
    111 4.22
    222 6.66
    333 4.13
    444 NP
    
    Conjunt per nota decreixent:
    222 6.66
    111 4.22
    333 4.13
    444 NP
    
    Conjunt:
    3
    111 4.22
    333 4.13
    444 NP
    
    Conjunt per nota decreixent:
    111 4.22
    333 4.13
    444 NP
    
    Conjunt:
    5
    111 4.22
    333 4.13
    444 NP
    445 NP
    555 9.5
    
    Conjunt per nota decreixent:
    555 9.5
    111 4.22
    333 4.13
    444 NP
    445 NP
    
    L'estudiant 445 ja hi era
    
    L'estudiant 777 no hi era
    
    Conjunt:
    5
    111 4.22
    444 NP
    445 NP
    555 9.5
    666 NP
    
    Conjunt per nota decreixent:
    555 9.5
    111 4.22
    444 NP
    445 NP
    666 NP
    
    
  • Information
    Author
    Professors de PRO2
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++