Advertisement
JosepRivaille

X45504: Control - Torn 2 (Primavera 2015)

Oct 8th, 2015
733
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.63 KB | None | 0 0
  1. #include "ListaPalabras.hh"
  2.  
  3. void ListaPalabras::anadir_palabra(const Palabra &p)
  4. {
  5. /* Pre: el número de palabras en el parámetro implícito es menor que la
  6.    longitud máxima o p ya está en él; p no es la palabra vacía */
  7. /* Post: si p estaba en el parámetro implícito original, su frecuencia se ha
  8.    incrementado en 1; si no, p pasa a estar en él, con frecuencia 1 */
  9.   bool b;
  10.   int j;
  11.   buscar_palabra_posicion(p,b,j);
  12.   if (b) ++paraules[j].freq;
  13.   else {
  14.     paraules[j].par = p;
  15.     paraules[j].freq = 1;
  16.     ++nparaules;
  17.     ++npar_long[p.long_pal() - 1];
  18.   }
  19.   ++suma_frec_long[p.long_pal() - 1];
  20. }
  21.  
  22. void ListaPalabras::borrar_palabra(const Palabra &p)
  23. {
  24. /* Pre: si p pertence al p.i., tiene frecuencia f */
  25. /* Post:
  26.    si p no pertence al p.i., no cambia nada;
  27.    si f = 1, p ya no pertenece al p.i.;
  28.    si f > 1, la frecuencia de p se ha decrementado en 1 */
  29.   bool b;
  30.   int i;
  31.   buscar_palabra_posicion(p,b,i);
  32.   if (b) {
  33.     if (paraules[i].freq > 1) --paraules[i].freq;
  34.     else {
  35.       int allargada = longitud();
  36.       paraules[i] = paraules[allargada - 1];
  37.       --nparaules;
  38.       --npar_long[p.long_pal() - 1];
  39.     }
  40.     --suma_frec_long[p.long_pal() - 1];
  41.   }
  42. }
  43.  
  44. void ListaPalabras::buscar_palabra_posicion(const Palabra &p, bool &b, int &i) const
  45. {
  46. /* Pre: cierto */
  47. /* Post: b indica si p está en el parámetro implícito;
  48.    si b, entonces i es la posición en la que está p; si no, i es la
  49.    longitud del parámetro implícito */
  50.   int longi = longitud();
  51.   i = 0;
  52.   b = false;
  53.   while (i < longi && !b) {
  54.     b = (paraules[i].par.iguales(p));
  55.     if (!b) ++i;
  56.   }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement