La Web del Programador: Comunidad de Programadores
 
    Pregunta:  4687 - CORRECTOR ORTOGRAFICO
Autor:  Alberto Sanchez Martinez
Hola a todos, tengo que realizar una practica para la carrera y se trata de hacer un corrector ortografico.
* Se tiene que poder indicar un documento de texto para trabajar
* Se tiene que indicar uno o mas diccionarios
* El programa tiene que revisar el documento contrastando cada una de las palabras con el diccionario.
* se tiene que generar un nuevo fichero y que guardara el documento corregido
* Los datos del diccionario se tienen que leer y combinarse adecuadamente para que no se tengan que leer los ficheros mas de una vez
Habia pensado en arboles ¿que piensan ustedes?

  Respuesta:  Harold Ortega Pérez.
Muy Buenas!
Tengo una sugerencia:

Hace unos días costruí un compilador para el lenguaje AWK de Unix solo que debía correr en DOS. La técnica que utilicé podría servirte para tu corrector ortográfico. Consiste en:

Cargas el texto que vas a revisar en una hilera de caracteres.

Puedes usar la instrucción strtok que permite separar o extraer "tokens" de una hilera de caracteres. Los "tokens" están definidos por un caracter separador y en el caso del corrector ortográfico el caracter separador sería el espacio en blanco. strtok devolvería cada una de las palabras que contenga la hilera de caracteres que revises. Luego, cada palabra devuelta por strtok la buscas en el o los diccionarios que tengas cargados en memoria. No habría necesidad de levantar una compleja estructura en memoria ya que el archivo en el disco que contiene la lista de palabras (diccionario) podría contener un índice que te permita saltar a las palabras que comienzan con a, b, c y así sucesivamente dentro del archivo haciendo la búsqueda en el disco relativamente rápida.

La revisión ortográfica terminaría cuando strtok llegue a NULL en la hilera de caracteres que revisas.

Sé que es poco o puede ser que esta posibilidad ya la analizaras pero espero que te pueda ser de utilidad.

Si quieres puedes escribirme a mi correo para ver si te puedo ayudar más.

Suerte con tu trabajo!