Guest User

Untitled

a guest
Jul 20th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. struct Assignatura {
  7. string nom;
  8. double nota; // -1 = NP
  9. };
  10.  
  11. struct Alumne {
  12. string nom;
  13. int dni;
  14. vector<Assignatura> ass;
  15. };
  16.  
  17. double nota(const vector<Alumne>& alums, int dni, string nom) {
  18. int al = 0;
  19. while (al < alums.size() and alums[al].dni != dni) ++al;
  20. if (al == alums.size()) return -1.0;
  21. int as = 0;
  22. while (as < alums[al].ass.size() and alums[al].ass[as].nom != nom) ++as;
  23. if (as == alums[al].ass.size()) return -1.0;
  24. return alums[al].ass[as].nota;
  25. }
  26.  
  27. double mitjana(const vector<Assignatura>& ass) {
  28. double suma = 0.0;
  29. int cont = 0;
  30. for (int i = 0; i < ass.size(); ++i) {
  31. if (ass[i].nota > -1.0) {
  32. suma += ass[i].nota;
  33. ++cont;
  34. }
  35. }
  36. return suma/double(cont);
  37. }
  38.  
  39. void compta(const vector<Alumne>& alums, int dni, string nom, int& com) {
  40. double piv = nota(alums, dni, nom);
  41. com = 0;
  42. for (int i = 0; i < alums.size(); ++i) {
  43. double m = mitjana(alums[i].ass);
  44. if (m > piv) ++ com;
  45. }
  46. }
  47.  
  48. int main() {
  49. int n;
  50. cin >> n;
  51. vector<Alumne> alums(n);
  52. for (int i = 0; i < n; ++i) {
  53. int m;
  54. cin >> alums[i].nom >> alums[i].dni >> m;
  55. alums[i].ass = vector<Assignatura>(m);
  56. for (int j = 0; j < m; ++j) {
  57. cin >> alums[i].ass[j].nom >> alums[i].ass[j].nota;
  58. }
  59. }
  60. int dni;
  61. string nom_ass;
  62. while (cin >> dni >> nom_ass) {
  63. int comptador;
  64. compta(alums, dni, nom_ass, comptador);
  65. cout << comptador << endl;
  66. }
  67. }
Add Comment
Please, Sign In to add comment