The Poble Sec School of Informatics stores the information of its students and the marks they have obtained in the subjects they have done in this struct:
where |Subject| is:
Using these definitions, implement the function
that searches and returns the mark that the student |idn| has obtained at the subject |name|. If the student does not exist, or if he has not done the subject, or his mark is NP, the function must return −1.
You also have to implement the function:
that calculates and returns the average mark of the subjects in the vector |subj|. To calculate the average mark, NP must be ignored. If all the marks are NP or the vector is empty, the mean mark is −1.
Using the previous functions, you must implement:
that counts and sets in the output parameter |counter| the number of students in the vector |stu| that have a average mark greater than the mark that student |idn| has obtained at the subject |name|.
Precondition
There are not repeated students. In the list of subjects of each student there are not repeated subjects.
Observation
The main program is already done; do not modify it. This program reads the student’s data, then prints the result of your |count()| function for each combination student-subject of the input.
(In the instance, the average marks of Helen, Michael, Peter, Alicia, Paul, John and George are respectively 9.5, 8, 0, 5.25, −1, 9.25 and −1. The 2 in the output corresponds to Helen and John. The 1 corresponds to Helen. The 5 correspond to Helen, Michael, Peter, Alicia and John).
Input
7 Helen_OConnell 12345678 4 P1 9 PHYSICS 9.5 IC 9.5 ALGEBRA 10 Michael_Martin 77777777 3 ANALYSIS 8 P1 7 IC 9 Peter_Great_Disaster 55599666 4 P1 0 PHYSICS -1 ALGEBRA 0 IC 0 Alicia_Nottoo_Bad 55511111 4 XC 5 P1 6.5 PHYSICS 5.5 IL 4 Paul_No_Registration 55544444 0 John_Smith 55533333 2 P1 9.25 PHYSICS -1 George_Calm 66666666 4 P1 -1 PHYSICS -1 IC -1 ALGEBRA -1 12345678 P1 55533333 P1 55533333 PHYSICS 55533333 PRAP 11111111 P1
Output
2 1 5 5 5