Página principal   Lista alfabética   Lista de componentes   Lista de archivos   Miembros de las clases   Páginas relacionadas  

Programación en C++ (Practicas de Est. Datos)

Práctica: Abstracción, plantillas e iteradores.

Después de esta práctica el alumno debe estar familiarizado con el uso de tipos de datos abstractos clásicos, como son el tipo Vector, Conjunto y Diccionario, así como el uso de plantillas e iteradores.

Los objetivos de la práctica son

Se desea desarrollar un programa para el análisis y clasificación automática de textos. Para ello, se considera el problema de analizar la relación entre un subconjunto de palabras relevantes y un texto. El proceso es el siguiente,

  1. Se crean dos ficheros de texto
    1. Palabras relevantes. Contiene todas las palabras que se consideran relevantes.
    2. Texto. El texto a analizar.
  2. El programa a desarrollar se llamará analizar, y leerá los dos ficheros anteriores para obtener la salida. La forma de lanzarlo será "analizar <relevantes> <texto>" donde
    1. <relevantes> es el nombre del fichero donde están las palabras relevantes.
    2. <texto> es el nombre del fichero con el texto a analizar.
  3. El programa obtiene en la salida estandar (cout):
    1. Número de palabras relevantes
    2. Número de palabras en el texto
    3. Porcentaje de palabras relevantes que aparecen en el texto
    4. Porcentaje de palabras en el texto que son relevantes.
    5. Las palabras relevantes que aparecen en el texto y su frecuencia, ordenadas desde mayor frecuencia a menor
    6. Las palabras del texto y su frecuencia, ordenadas desde mayor frecuencia a menor.
Para simplificar el problema, y que el alumno no dedique un tiempo excesivo a detalles de menor importancia para la práctica, se dispone de una clase Lector_Palabras que resuelve el problema de leer un conjunto de palabras desde un flujo de entrada.

Nótese que el fichero de palabras relevantes podría ser un texto cualquiera, con palabras repetidas, caracteres especiales, etc, que podría leerse con el tipo Lector_Palabras de la misma forma que el texto a analizar.

El alumno debe:

  1. Crear un programa analizar que resuelva el problema descrito. Para ello, puede usar los tipos de dato abstractos desarrollados para gestionar
    1. Un lector de palabras (tipo Lector_Palabras)
    2. Un vector dinámico (tipo Vector)
    3. Un conjunto (tipo Conjunto)
    4. Un diccionario (tipo Diccionario y Par)
  2. Entregar la práctica como
    1. Un documento en papel que contiene tanto el listado como la documentación del programa realizado.
    2. Un disquette con la práctica. Éste debe estar contenido en un sobre o similar que permita pegarlo al documento entregado. En este disquette deben aparecer
      1. Los fuentes necesarios para compilar el programa. Nótese que estos incluyen tanto los del alumno como los del profesor.
      2. Un fichero makefile (que se llamará makefile) para generar el ejecutable escribiendo simplemente make, y para borrar los ficheros objeto escribiendo make clean
      3. Un fichero LEEME donde se describe el contenido del disco y cualquier comentario adicional sobre el programa que el alumno considere oportuno.
La fecha de ENTREGA será el Lunes, 20 de Mayo antes del las 14h. Las prácticas se entregarán al delegado de curso que se las hará llegar al profesor.

Software disponible

Para facilitar la realización de la práctica, se ha preparado un archivo con todos los contenidos necesarios (entre ellos, esta documentación).

Después de ejecutar setup se habrán generado todos los archivos binarios necesarios:

Nótese que la estructura que se ofrece es únicamente como muestra de la forma en que se pueden desarrollar programas, así como para generar automáticamente la documentación. El alumno debe crear su propio makefile y estructura para que la compilación de su aplicación se haga según se indicó anteriormente.


Programación en C++. Desarrollado por Antonio Garrido, © 2001