Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1101
I Semestre 2012
[<=] [home] [<>] [\/] [=>]
CI-1101 Programación 1

Tarea #8 [solución]

Palabras Soundex de un párrafo

      Para esta tarea programada usted debe enviarme estos archivos:

  1. soundex.java
  2. JalaPalabras.java
  3. CARNET.docx
  4. CARNET.html
  5. CARNET.url

Encuentre en la red el algoritmo para calcular el código Soundex de una palabra. Luego, tome un documento guardado en un archivo de texto, y suponga que está separado en párrafos que terminan con el punto '.'. Elimine de los párrafos todos los caracteres que no sean alfabéticos, los que son fáciles de detectar usando el método isLetter() que es parte de las biblioteca de programación Java.

Use una lista de tipo ArrayList<> para meter todas las hileras que conforman un párrafo. Además, paralela a esa lista, use otra que contenga los códigos Soundex de las palabras de ese párrafo. Después de leer todo el documento, grabe los párrafos primero, seguidos de sus códigos Soundex, y separados por 72 iguales. Al final, su programa producirá una salida similar a ésta:

========================================================================

Las palabras que son muy cortas no tienen Soundex; solo las largitas.

[palabras,P416] [cortas,C632] [tienen,T550] [Soundex,S532] [Solo,S400] [largitas,L623]

========================================================================

No vale la pena calcular el Soundex para palabras de menos de 4 letras.

[vale,V400] [pena,P500] [calcular,C424] [para,P600] [palabras,P416] [menos,M520] [letras,L362]

========================================================================

Consulta:
Profe: Me parece que hace falta que la palabra tenga por lo menos 3 consonantes para que el Soundex salga bien, porque si no quedan puros ceros como con [para,P600] o [vale,V400]. ¿Le pongo eso a mi programa?
Respuesta:
Me parece muy complicado contar consonantes, pero si querés hacerlo, ¡allá vos! Es más sencillo contar letras, por lo que debieran calcular el código solo para palabras de 6 o más letras.
Consulta:
Profe: ¿Puedo usar una lista en lugar del ArrayList<>? Es que ni hace falta, porque primero grabo el párrafo y luego lo leo de nuevo y grabo los Soundex.
Respuesta:
La idea de este programa es poder usar posteriormente los códigos Soundex para indexar los párrafos. Esto requiere almacenar todos los párrafos en la memoria para luego encontrar todos aquellos que corresponden a una palabra. Por ejemplo, si el usuario del programa digita como búsqueda la palabra "palabra" cuyo Soundex es "P416", tu programa debiera poder grabar como respuestas los párrafos que aparecen en el ejemplo de arriba (esta parte del programa queda para un trabajo posterior, que no forma parte de esta tarea).
Consulta:
Profe: Lo que se me ocurrió fue hacer dos scanners: el primero para hallar el número de líneas y el segundo para pasar las líneas al ArrayList<> pero al darle compilar no hay problema y al darle run no pasa nada.
Respuesta:
En realidad la clase ArrayList<> es una lista disfrazada, porque incluye el método get(int index) que retorna el elemento que está en la posición 'index' delArrayList<>.
No hay nada malo en usar 2 scanners, pero creo que podés lograr lo mismo leyendo el contenido del archivo 2 veces. Sin embargo, si en la primera lectura almacenás en un ArrayList<> el contenido del párrafo, no necesitás leerlo de nuevo porque ya lo tenés en memoria.

[mailto:] Entrega de Tareas

Tiempo de entrega: 1 semana
Modalidad: En parejas

Soluciones

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2012
Derechos de autor reservados © 2012
[home] <> [/\]