Advertisement
JosepRivaille

X73814: Simplificació d'un vector d'estudiants agrupats

Sep 25th, 2015
1,663
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.53 KB | None | 0 0
  1. #include "Estudiant.hh"
  2.  
  3. #include <iostream>
  4. #include <vector>
  5. using namespace std;
  6.  
  7.  
  8. void llegir(vector<Estudiant>& v){
  9.   int vsize;
  10.   cin >> vsize;
  11.   v = vector<Estudiant> (vsize);
  12.   for(int i = 0; i < vsize; ++i){
  13.     int DNI;
  14.     double mark;
  15.     cin >> DNI;
  16.     Estudiant al(DNI);
  17.     v[i] = al;
  18.     cin >> mark;
  19.     if (0 <= mark && mark <= 10) v[i].afegir_nota(mark);
  20.   }
  21. }
  22.  
  23. int new_size(const vector<Estudiant>& v) {
  24.   int tam = v.size();
  25.   int new_tam = 0;
  26.   int dni = -1;
  27.   for (int i = 0; i < tam; ++i) {
  28.     if (v[i].consultar_DNI() != dni) {
  29.       ++new_tam;
  30.       dni = v[i].consultar_DNI();
  31.     }
  32.   }
  33.   return new_tam;
  34. }
  35.  
  36.  
  37. void simplifica(const vector<Estudiant>& v, vector<Estudiant>& u) {
  38.   int it = -1;
  39.   int dni = -1;
  40.   int tam = v.size();
  41.   for (int i = 0; i < tam; ++i) {
  42.     int DNI = v[i].consultar_DNI();
  43.     if(DNI != dni) {
  44.       dni = DNI;
  45.       ++it;
  46.       Estudiant al(DNI);
  47.       u[it] = al;
  48.       if (v[i].te_nota()) u[it].afegir_nota(v[i].consultar_nota());
  49.     }
  50.     else {
  51.       if (v[i].te_nota()) {
  52.     if (u[it].te_nota()) {
  53.       double mark = v[i].consultar_nota();
  54.       if (u[it].consultar_nota() < mark) u[it].modificar_nota(mark);
  55.     }
  56.     else u[it].afegir_nota(v[i].consultar_nota());
  57.       }
  58.     }
  59.   }
  60. }
  61.  
  62. void escriu(const vector<Estudiant>& u) {
  63.   int tam = u.size();
  64.   for (int i = 0; i < tam; ++i) u[i].escriure();
  65. }
  66.  
  67.  
  68. int main () {
  69.   vector<Estudiant> v;
  70.   llegir(v);
  71.   vector<Estudiant> u(new_size(v));
  72.   simplifica(v, u);
  73.   escriu(u);
  74. }
  75.  
  76. //JosepRivaille
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement