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:
on |Assignatura| ve donat per:
Usant aquestes definicions, implementeu la funció
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ó
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ó
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.)
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