Control PRO2 - Torn 2 (primavera 2015)

Hem decidit estendre la classe ListaPalabras que heu vist a la sessió 5 de laboratori (sense el mètode max_frec) amb dues noves funcionalitats:

Hem optat per afegir dues noves operacions públiques amb la següent especificació:

double frec_media_long(int l) const;
/* Pre: 0 < l <= Palabra::longitud_maxima() */
/* Post: el resultado es la frecuencia media de las palabras de
   longitud l en el parámetro implícito (cero si no hay ninguna) */
     
void borrar_palabra(const Palabra & p);
/* Pre: si p pertence al p.i., tiene frecuencia f */
/* Post:
   si p no pertence al p.i., no cambia nada; 
   si f = 1, p ya no pertenece al p.i.; 
   si f > 1, la frecuencia de p se ha decrementado en 1 */    

Això ha suposat afegir atributs nous a la classe. Tenint això en compte, només heu d’implementar eficientment dues operacions públiques: borrar_palabra i

void anadir_palabra(const Palabra &p);
/* Pre: el número de palabras en el parámetro implícito es menor que la 
   longitud máxima o p ya está en él; p no es la palabra vacía */
/* Post: si p estaba en el parámetro implícito original, su frecuencia se ha
   incrementado en 1; si no, p pasa a estar en él, con frecuencia 1 */    

Per implementar aquestes operacions heu d’usar una operació auxiliar privada que també heu d’implementar:

void buscar_palabra_posicion(const Palabra &p, bool &b, int &i) const;
/* Pre: cierto */
/* Post: b indica si p está en el parámetro implícito;
   si b, entonces i es la posición en la que está p; si no, i es la 
   longitud del parámetro implícito */ 

Observació

Heu de lliurar un fitxer solucio.cc amb una implementació eficient de les operacions anadir_palabra, borrar_palabra i buscar_palabra_posicion que ha de tenir el següent format:

#include "ListaPalabras.hh"

void ListaPalabras::anadir_palabra(const Palabra &p)
{
  ... // codi de la implementació
}

void ListaPalabras::borrar_palabra(const Palabra &p)
{
  ... // codi de la implementació
}

void ListaPalabras::buscar_palabra_posicion(const Palabra &p, bool &b, int &i) const
{
  ... // codi de la implementació
}

Copieu aquesta plantilla en el vostre solucio.cc i completeu-la. El vostre solucio.cc no pot contenir la implementació d’altres operacions de la classe.

A l’apartat Public files del Jutge us proveïm amb material addicional comprimit en un fitxer .tar. Podeu descomprimir aquest fitxer amb la comanda

   tar -xvf nom_fitxer.tar

Aquest material addicional consisteix en els següents fitxers:

Valorarem positivament que la solució no contingui instruccions (especialment bucles o crides a operacions costoses) ni objectes (especialment vectors o llistes de paraules) innecessaris. No es pot emprar cap estructura de dades que no hagi aparegut a les sessions 1-5 de laboratori.
 
Quan feu els enviaments el Jutge us indicarà quants jocs de proves passeu i de quin tipus (public o privat). El joc de proves anomenat public és el que teniu al fitxer llegeixme.txt. El privat1 és molt semblant al public. Els privat2 i privat3 proven situacions especials.

Informació del problema

Autoria: Professors de PRO2

Generació: 2026-01-25T16:20:15.359Z

© Jutge.org, 2006–2026.
https://jutge.org