• Jueves 25 de Abril de 2024, 09:13

Autor Tema:  Correcion De Palabras De Un Texto  (Leído 1146 veces)

amedinadiaz

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Correcion De Palabras De Un Texto
« en: Martes 2 de Marzo de 2004, 18:37 »
0
Bueno pues tengo el siguiente programa que deberia imprimir en pantalla las palabras mal escritas de un texto (a partir de un diccionario que os incluyo, al igual que el texto), y con este codigo lo hace de hecho. El problema es que ademas de las palabras mal escritas imprime una serie de letras que no deberia imprimir, aqui os dejo el output del programa:

Citar
skeptics
balloons
a
skeptics
a
studise
snorg
e
g
sagan
mya
planest
lief
civilization
resolution
sucy
a
a
civilization
a
histoyy
a
civilization
postulate
a
wide
civilization
a
mj
mj
u
s
a
mj
majestic
thees
a
a
a
a
skeptic
Press any key to continue

Que imprima e y g es normal porque estas palabras no estan en el diccionario, pero que imprima la "a" si que no lo entiendo. Por favor, a ver si alguien entiende cual es el problema y puede ayudarme. Gracias. Aqui os dejo el codigo que he hecho:


Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <malloc.h>
  5.  
  6. int main (void)
  7. {
  8.   FILE *text_file, *dict;
  9.   char buffer[1][500];
  10.   char buf2[300];
  11.   char **pdict;
  12.   char *word, *pch;
  13.   int count=0, count2=0, flag=0;
  14.   int i, scan, length, x;
  15.  
  16.   dict=fopen("dict.txt", "r");
  17.   
  18.   if(dict==NULL)
  19.     printf("Dictionary failed.\n");
  20.   else
  21.   {
  22.     while((fgets(buffer,500, dict))!=NULL)
  23.     {
  24.       count++;
  25.     }
  26.   }
  27.   fclose(dict);
  28.   pdict=(char**)(malloc(count*sizeof(char*)));
  29.  
  30.   dict=fopen("dict.txt", "r");
  31.   if(dict==NULL)
  32.     printf("Dictionary failed.\n");
  33.  
  34.   for(x=0; x<count; x++)
  35.   {
  36.     scan=fscanf(dict, "%s", buffer[0]);
  37.  
  38.     length=strlen(buffer[0]);
  39.     pdict[x]=(char*)(malloc(length*sizeof(char)));
  40.     strcpy(pdict[x], buffer[0]);
  41.   }
  42.  
  43.   text_file=fopen("textfile.txt", "r");
  44.  
  45.   if(text_file==NULL)
  46.     printf("Text File failed.\n");
  47.   else
  48.   {
  49.     while((fgets(buf2,300,text_file))!=NULL)
  50.     {
  51.       count2++;
  52.       pch=strtok(buf2," )(\n*?-%+.,!:1234567890\\\"");
  53.       while(pch!=NULL)
  54.       {
  55.         flag=0;
  56.         word=_strlwr(pch);
  57.         for(i=1;i<count;i++)
  58.         {
  59.           if(strcmp(pdict[i],word)==0)
  60.           {
  61.             flag=1;
  62.             break;
  63.           }
  64.         }
  65.         if(flag==0)
  66.         {
  67.           printf("%s\n",word);
  68.         }
  69.         pch=strtok(NULL," -\n)(*?%!+.,1:234567890\\\"");
  70.  
  71.       }
  72.  
  73.     }
  74.   }
  75.   fclose(text_file);
  76.         
  77.   return 0;
  78. }
  79.  
  80.  

Como siempre si descubro como hacerlo ya os lo dire por aqui. Cualquier correcion, aunque sea secundaria es bienvenida.

EL DICCIONARIO Y EL ARCHIVO DE TEXTO ESTAN EN ESTE ZIP.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
He visto cosas que vosotros no creeriais...
Todos esos momentos...se perderan en el tiempo...
como lagrimas en la lluvia...

Por no comprarme la dichosa camara digital!!

amedinadiaz

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Correcion De Palabras De Un Texto
« Respuesta #1 en: Martes 2 de Marzo de 2004, 18:48 »
0
Perdonen x ser un pokito tontito, ya descubri el error simplemente tenia que inicializar i=0 en el loop FOR:P A veces lo mas sencillo es lo mas jodido de ver!!

De todas formas os dejo aki el programa a ver si a alguno le interesa desarrollarlo. El objetivo es que imprima la palabra erronea, con la linea de texto en la que esta y si encuentra una palabra similar en el diccionario a la erronea, imprimirla tambien. Si la palabra erronea aparece mas de 3 veces, debe guardarla en un archivo nuevo.

Eso es todo, me pondre a ello en seguida!
He visto cosas que vosotros no creeriais...
Todos esos momentos...se perderan en el tiempo...
como lagrimas en la lluvia...

Por no comprarme la dichosa camara digital!!

amedinadiaz

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Correcion De Palabras De Un Texto
« Respuesta #2 en: Martes 2 de Marzo de 2004, 19:05 »
0
Y sigo respondiendome a mi mismo. Para imprimir el numero d linea de la palabra erronea tan solo hay que anadir al "printf("%s\n", word);" un %d y , count2.

Seguire informando para el que le interese:P
He visto cosas que vosotros no creeriais...
Todos esos momentos...se perderan en el tiempo...
como lagrimas en la lluvia...

Por no comprarme la dichosa camara digital!!

fullkill2003

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Correcion De Palabras De Un Texto
« Respuesta #3 en: Viernes 2 de Abril de 2004, 04:01 »
0
Cita de: "amedinadiaz"
Perdonen x ser un pokito tontito, ya descubri el error simplemente tenia que inicializar i=0 en el loop FOR:P A veces lo mas sencillo es lo mas jodido de ver!!

De todas formas os dejo aki el programa a ver si a alguno le interesa desarrollarlo. El objetivo es que imprima la palabra erronea, con la linea de texto en la que esta y si encuentra una palabra similar en el diccionario a la erronea, imprimirla tambien. Si la palabra erronea aparece mas de 3 veces, debe guardarla en un archivo nuevo.

Eso es todo, me pondre a ello en seguida!
Hola:

Como podria utilizar las librerias del WORD OFFICE para el diseño de una diccionario. Si alquien sabe por favor escribirme a fullkill2003@yahoo.es.

Gracias de todas formas.
Estudiante de la
Univercidad de las Ciencias Informáricas