Advertisement
DatProgrammer

Untitled

Mar 10th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.46 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include "Estudiant.hh"
  4. using namespace std;
  5.  
  6. void p(const vector<Estudiant>& v, vector<Estudiant>& w) {
  7.   /*Simplifica les notes d'un vector d'Estudiants triant la nota mes alta de cadascun d'ells*/
  8.  
  9.   w.push_back(v[0]); //assignem el primer DNI a la primera posicio del vector resultat
  10.   int j = 0; //usat per posicio w[0]
  11.   for (int i = 1; i < v.size(); ++i) {
  12.     if (v[i].consultar_DNI() != w[j].consultar_DNI()) {
  13.       w.push_back(v[i]);
  14.       j += 1; //per accedir a les seguents posicions, ja que el vector "w" es mes llarg
  15.     }
  16.     else { /*si es el mateix DNI que l'anterior (recordar: els estudiants iguals van consecutivament) comprovem si
  17.         aquest te una major nota que l'anterior */
  18.       bool bv = v[i].te_nota(); //te nota valida?
  19.       bool bw = w[j].te_nota(); //te nota valida?
  20.       if (bv and bw) { //si els dos vectors tenen notes valides comparar quina es mes gran
  21.                 if ((v[i].consultar_nota()) > (w[j].consultar_nota()))  {
  22.                   w[j].modificar_nota(v[i].consultar_nota()); //si la nota actual a "w" es major la canviem per la nova de "v"
  23.                 }
  24.   }
  25.   else if (bv and not bw)   { //si l'actual nota d'aquest estudiant a "w" es NP la canviem per una de valida de "v"
  26.                 w[j].afegir_nota(v[i].consultar_nota());
  27.   }
  28. }
  29. }
  30. }
  31.  
  32.  
  33. int main() {
  34.  
  35.   int n;
  36.   cin >> n;
  37.   vector<Estudiant> v(n);
  38.   for (int i = 0; i < n; ++i) v[i].llegir();
  39.                  vector<Estudiant> w;
  40.   p(v,w);
  41.   for (int i = 0; i < w.size(); ++i) w[i].escriure();
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement