F001A. Alumnes de la FIPS P81104


Statement
 

pdf   zip

thehtml

La Facultat d’Informàtica del Poble Sec guarda la informació dels seus alumnes i de les notes que han obtingut a les assignatures que han cursat en l’estructura de dades següent:

struct Alumne { string nom; // Nom de l’alumne int dni; // DNI de l’alumne vector<Assignatura> ass; // Llista d’assignatures de l’alumne };

on |Assignatura| ve donat per:

struct Assignatura { string nom; // Nom de l’assignatura double nota; // Entre 0 i 10, -1 indica NP };

Usant aquestes definicions, implementeu la funció

double nota(const vector<Alumne>& alums, int dni, string nom);

que busqui i retorni la nota que l’alumne |dni| ha obtingut a l’assignatura |nom|. Si l’alumne no existeix, no ha cursat l’assignatura demanada, o hi ha tret un NP, cal retornar −1.

Implementeu també la funció

double mitjana(const vector<Assignatura>& ass);

que calculi i retorni la nota mitjana de les assignatures del vector |ass|. Els NP no compten en el càlcul de la mitjana. Si totes les notes són NP o el vector és buit, considereu que la nota mitjana és −1.

Usant les dues funcions anteriors, implementeu l’acció

void compta(const vector<Alumne>& alums, int dni, string nom, int& com);

que compti i deixi en el paràmetre de sortida |com| el nombre d’alumnes del vector |alums| que tenen una nota mitjana estrictament superior a la nota que l’alumne |dni| ha obtingut a l’assignatura |nom|.

Precondició

No hi ha alumnes repetits. A la llista d’assignatures de cada alumne no hi ha assignatures repetides.

Observació

El programa principal ja se us dóna implementat; no el canvieu. Aquest llegeix les dades dels alumnes, i després escriu el resultat de la vostra acció |compta()| per a cada combinació d’alumne i assignatura de l’entrada.

(A l’exemple, les notes mitjanes de la Mònica, en Joan, en Pere, l’Alícia, en Pol, l’Àstrid i en Jordi són respectivament 9.5, 8, 0, 5.25, −1, 9.25 i −1. El 2 de la sortida es correspon a la Mònica i l’Àstrid. El 1 es correspon a la Mònica. Els 5 es corresponen a la Mònica, en Joan, en Pere, l’Alícia i l’Àstrid.)

Public test cases
  • Input

    7
    Monica_Boneta        12345678  4  P1 9   FISICA 9.5   IC 9.5   ALGEBRA 10
    Joan_Pi_Sarri        77777777  3  ANALISI 8   P1 7   IC 9
    Pere_Gran_Desastre   55599666  4  P1 0   FISICA -1   ALGEBRA 0   IC 0
    Alicia_Tirant_Tirant 55511111  4  XC 5   P1 6.5   FISICA 5.5   IL 4
    Pol_Sense_Matricula  55544444  0
    Astrid_Gonzalez      55533333  2  P1 9.25   FISICA -1
    Jordi_Tranquil       66666666  4  P1 -1   FISICA -1   IC -1   ALGEBRA -1
    
    12345678 P1
    55533333 P1
    55533333 FISICA
    55533333 PRAP
    11111111 P1
    

    Output

    2
    1
    5
    5
    5
    
  • Information
    Author
    Professorat de P1
    Language
    Catalan
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++