Asignación 01: programa Frecuencia de caracteres en un texto

Anuncio
Universidad de Puerto Rico en Humacao
Departamento de Matemáticas
COMP 4097: Estructuras de Datos y Algoritmos
Instructor: José O. Sotero Esteva
Segundo semestre, 2014-2015 (23/01/15)
Asignación 01: programa Frecuencia de caracteres en un
texto
Descripción
En este proyecto escribiremos un programa que leerá un archivo de texto e imprimirá un histograma de
caracteres representando la frecuencia con que aparece cada caracter en el texto. Un ejemplo pequeño
sería el siguiente. Suponga que el archivo llamado prueba.txt contiene el texto
La NASA capta el momento en el que un asteroide 'roza' la Tierra
El programa debe leer todos los caracteres, contar cuantas veces aparece cada uno y luego computar la
frecuencia (en por ciento). Si se ejecutara la orden
FrecuenciaCaracteres prueba.txt
imprimiría:
Frecuencia de caracteres imprimibles en el archivo prueba.txt. c| %| 5 10 15 20 25 30 35 40 45 50 55 ­+­­+­­­­+­­­­+­­­­+­­­­+­­­­+­­­­+­­­­+­­­­+­­­­+­­­­+­­­­+­­­­
:18:================== e:12:============ a:10:========== o: 6:====== r: 6:====== t: 4:==== l: 4:==== n: 4:==== A: 3:=== m: 3:=== u: 3:=== i: 3:=== ': 3:=== Asignación 01: programa Frecuencia de caracteres en un texto
L: 1:= N: 1:= S: 1:= c: 1:= p: 1:= q: 1:= s: 1:= d: 1:= z: 1:= T: 1:= Objetivos
1. Refrescar el conocimiento adquirido en los cursos COMP 3081-3082 sobre definición y
manipulación de: variables de texto, archivos, arreglos, clases, campos de clase, métodos de
clase públicos y privados, constantes, condicionales, ciclos, uso de bibliotecas del lenguaje, etc.
2. Escribir nuevos programas en C++ valiéndose de la documentación disponible en el texto y las
referencias del curso y en fuentes de referencia del lenguaje como cplusplus.com.
3. Experimentar con una combinación de arreglos y contadores que forman una estructura de
datos.
4. Ceñirse a las especificaciones de requisitos de un proyecto.
Procedimiento
Previo a comenzar el trabajo sobre el código para el proyecto se sugiere completar los siguientes
ejercicios:
1. Estudie cuidadosamente la sección 2.7 (Character Input and Output) de la referencia Lecture
Notes on C++ for Java Programmers. Estudie, escriba, ejecute y entienda los cuatro ejemplos
contenidos en esa sección. Recuerde: si no puede escribir un programa que corra, entonces no
lo entiende. ¡Hágalo!
2. Estudie cuidadosamente la sección Input/output with files de cplusplus.com
(http://www.cplusplus.com/doc/tutorial/files/). Preste particular atención al ejemplo titulado //
reading a text file. Recuerde: si no puede escribir un programa que corra,
entonces no lo entiende. ¡Hágalo!
3. Combine lo aprendido en los dos pasos anteriores para hacer modificar el ejemplo 2.7.2
4. Character counting (ctch1.c) de Lecture Notes on C++ for Java Programmers para que lea
de un archivo en vez de un teclado.
5. Estudie el segundo programa de ejemplo en el artículo How to parse command line parameters
de cplusplus.com (http://www.cplusplus.com/articles/DEN36Up4/). Es el que tiene el
comentario // Check the number of parameters. Recuerde: si no puede escribir un programa que
corra, entonces no lo entiende. ¡Hágalo!
Una vez esté segura o seguro de que entiende lo anterior puede comenzar el procedimiento para hacer
Página 2 de 4
Asignación 01: programa Frecuencia de caracteres en un texto
el proyecto:
1. Siga el procedimiento Descargar asignaciones nuevas en el documento Procedimiento para
entrega de proyectos usando git. (versión 3) disponible en la página del curso.
2. Abra el archivo “FrecuenciaCaracteres.cbp” usando CodeBlocks. Verifique que su
contenido incluye los archivos main.cpp y FrecuenciaCaracter.cpp bajo Sources y
FrecuenciaCaracter.h bajo Headers. Estos contienen el código básico que Usted
deberá completar.
3. Se sugiere que vaya expandiendo la funcionalidad del programa en este orden:
4. Capture el nombre del archivo a utilizarse de la línea de comandos incorporando lo aprendido
en el paso 5 de arriba. Asegúrese que cumple con las especificación adicional número 3 de
abajo.
5. Abra, lea y cuente los caracteres del archivo que tiene el nombre provisto por el usuario en la
línea de comandos como en el ejemplo estudiado en el paso sugerido 4 de arriba. Asegúrese
que cumple con las especificación adicional número 4 de abajo.
6. Añada el código necesario a main() para que cree un objeto de la clase
FrecuenciaCaracter.
7. Añada el código que sea necesario en el constructor FrecuenciaCaracter() para que
inicialice el arreglo conteo de manera apropiada. Pruebe que realmente lo hace.
8. Añada el código que sea necesario en el método anade() de la clase
FrecuenciaCaracter para que actualice de manera apropiada los arreglos conteo y
letras. Sólo procese caracteres imprimibles. Pruebe que lo hace bien.
9. Añada el código que sea necesario en el método histograma() de la clase
FrecuenciaCaracter para que imprima los resultados como se especifica arriba. Note el
formato de tabla en el que las primeras dos columnas siempre tienen el mismo ancho. Los
resultados no tienen que aparecer en orden todavía.
10. Añada el código que sea necesario en el método ordena() de la clase
FrecuenciaCaracter para que ordene los datos en los arreglos usando como criterio que
aparezcan los caracteres de mayor frecuencia a menor frecuencia.
Especificaciones adicionales
1. El nombre del cartapacio en el que estará el proyecto será proyectos/asig01.
2. El nombre del proyecto será FrecuenciaCaracteres.
3. Si el usuario no proveyó la cantidad correcta de parámetros en línea de comandos su programa
deberá responder con el mensaje
Cantidad incorrecta de argumentos. Use FrecuenciaCaracteres <nombre de archivo>
4. Si ocurre un error al abrir el archivo su programa deberá responder con el mensaje
No puede abrir el archivo <nombre de archivo>. 5. Como siempre, deberá añadir a cada archivo de su código el Bloque de comentarios inicial.
6. El programa deberá funcionar correctamente para archivos de tamaño enorme (terabytes)
Página 3 de 4
Asignación 01: programa Frecuencia de caracteres en un texto
7. Su código deberá compilar sin errores ni advertencias.
8. Podrá suponer que los archivos de texto no tendrán mas de 1000 caracteres imprimibles
distintos.
Fecha y hora de entrega
Se recogerá la asignación de su depósito en mate.uprh.edu el Viernes 30 de enero de 2015 a las
23:55.
Criterios de evaluación
Se utilizará los siguientes criterios para evaluar su entrega: entrega correcta y a tiempo, uso de los
nombres especificados en estas instrucciones y en las instrucciones citadas aquí, documentación
(comentarios), adhesión a las especificaciones, el producto del programa es como el especificado.
Esta obra está bajo una Licencia Creative Commons Atribución-Compartir Igual 4.0 Internacional.
Página 4 de 4
Descargar