Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- struct Assignatura {
- string nom;
- double nota; // -1 = NP
- };
- struct Alumne {
- string nom;
- int dni;
- vector<Assignatura> ass;
- };
- double nota(const vector<Alumne>& alums, int dni, string nom) {
- int al = 0;
- while (al < alums.size() and alums[al].dni != dni) ++al;
- if (al == alums.size()) return -1.0;
- int as = 0;
- while (as < alums[al].ass.size() and alums[al].ass[as].nom != nom) ++as;
- if (as == alums[al].ass.size()) return -1.0;
- return alums[al].ass[as].nota;
- }
- double mitjana(const vector<Assignatura>& ass) {
- double suma = 0.0;
- int cont = 0;
- for (int i = 0; i < ass.size(); ++i) {
- if (ass[i].nota > -1.0) {
- suma += ass[i].nota;
- ++cont;
- }
- }
- return suma/double(cont);
- }
- void compta(const vector<Alumne>& alums, int dni, string nom, int& com) {
- double piv = nota(alums, dni, nom);
- com = 0;
- for (int i = 0; i < alums.size(); ++i) {
- double m = mitjana(alums[i].ass);
- if (m > piv) ++ com;
- }
- }
- int main() {
- int n;
- cin >> n;
- vector<Alumne> alums(n);
- for (int i = 0; i < n; ++i) {
- int m;
- cin >> alums[i].nom >> alums[i].dni >> m;
- alums[i].ass = vector<Assignatura>(m);
- for (int j = 0; j < m; ++j) {
- cin >> alums[i].ass[j].nom >> alums[i].ass[j].nota;
- }
- }
- int dni;
- string nom_ass;
- while (cin >> dni >> nom_ass) {
- int comptador;
- compta(alums, dni, nom_ass, comptador);
- cout << comptador << endl;
- }
- }
Add Comment
Please, Sign In to add comment