Advertisement
JosepRivaille

X51473: Selecció natural en mitjana

Nov 5th, 2015
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <list>
  4. using namespace std;
  5.  
  6.  
  7. void seleccio(const list<double>& l, list<double>& sel)
  8. /* Pre: l no es buida, sol es buida */
  9. /* Post: sel es el resultat de treure d'l els elements debles en mitjana */
  10. {
  11.   list<double>::const_iterator it1 = l.begin();
  12.   list<double>::iterator it2 = sel.begin();
  13.   sel.insert(it2, *it1); // Mai considerem el primer element feble en mitjana, l'insertem directament
  14.   int nombre = 1;    // Nombre d'elements visitats per fer la mitjana
  15.   double mitjana = *it1;
  16.   ++it1;
  17.   /* Inv: l.begin() < it1 <= l.end(), it1 apunta a l'element que visitem actualment
  18.    *      mitjana dels elements de la llista des de l.begin fins a la pos anterior on apunta it1
  19.    *      llista sel conté els elements no febles en mitjana de la llista l des de l.begin fins
  20.    *                                                   a la posició anterior a la que apunta it1
  21.    *      it2 apunta a la ultima posicio de sel
  22.    */
  23.   while (it1 != l.end()) {
  24.     if(*it1 >= mitjana) {   // Si no es mes petit que la mitjana dels anteriors, no es feble
  25.       sel.insert(it2, *it1);    // I s'ha d'insertar a sel
  26.     }
  27.     mitjana *= nombre;      // Modifiquem la mitjana i el nombre d'elements visitats i avancem per la llista
  28.     ++nombre;
  29.     mitjana += *it1;
  30.     mitjana /= nombre;
  31.     ++it1;
  32.   }
  33.   /* A: it1 == l.end()
  34.    *    nombre es el nombre d'elements de la llista l
  35.    *    it2 apunta a la ultima posicio de sel
  36.    *    sel conte tots els elements no febles en mitjana de la llista l
  37.    */
  38. }
  39.  
  40. //JosepRivaille
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement