Control - Torn 2 - Problema 2 (Primavera 2019) X37561


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, si tenim dos conjunts c1 i c2 que representen les notes de dos actes avaluatoris per a un mateix grup d’estudiantes, és a dir c1.consultar_iessim(i).consultar_DNI() = c2.consultar_iessim(i).consultar_DNI() per a tot i, 1 ≤ ic1.mida() = c2.mida() i tres double x,y,z tals que 0 ≤ x,y,zEstudiant::nota_maxima(), xy, volem crear un nou conjunt amb els estudiants tals que la seva nota a c1 tingui valor entre x i y, ambdós inclosos, i la seva nota a c2 sigui més gran o igual que z. A aquests estudiants els diem els reavaluables de c1 i c2 respecte a x,y,z i han de quedar sense nota en el nou conjunt.

Hem optat per afegir una nova operació que no pertany a cap classe amb la següent especificació:

void extreure_reavaluables(const Cjt_estudiants& c1, const Cjt_estudiants& c2,
                           double x, double y, double z, Cjt_estudiants& reava);
  /* Pre: c1 i c2 contenen els mateixos estudiants, reava es buit,
          0<=x,y,z<=Estudiant::nota_maxima(), x<=y */
  /* Post: reava està format pels estudiants reavaluables de c1 i c2 
           respecte a x,y,z, tots sense nota */

Observació

Heu de lliurar un fitxer solution.cc amb una implementació eficient de l’operació extreure_reavaluables. 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: la capçalera de la nova operació, 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

    2
    
    3
    111 4.22
    222 6.66
    333 545
    
    3
    111 2.22
    222 6.66
    333 545
    
    3.5 4.9 4
    
    4
    111 4
    222 4.5
    333 4
    212 -1
    
    4
    111 1
    222 4
    333 6
    212 5
    
    3.5 4.9 4
    

    Output

    Reavaluables:
    0
    
    Reavaluables:
    2
    222 NP
    333 NP
    
    
  • Information
    Author
    Professors de PRO2
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++