[ Foro de Pascal ]

Ayuda!! ¿necesito saber como contar palabras de un archivo de texto? !!!?

17-Jul-2009 01:32
juliet garcia
1 Respuestas

hola a todos pues bueno al igual que a varios necesito ayuda con pascal xD!.... bueno tengo una duda que es como hago para contar palabras de un archivo de texto ¿?? esto es lo que yo llevo: assign(prueba,ruta); reset(prueba); while not eof(prueba) do begin read(prueba,ch); write(prueba); end; close(prueba); por supuesto esto lleva sus variables y contantes pero bueno la cosa es como yo hago para contar las palabras de ese archivo de texto existente ps tenia una idea ya ps pero no me funciono se que con los espacios de cada palabra es que se cuentan pero...¿? intente algo pero no me funciono y vi algo aqui mismo en otro tema pero muestra cuando se ingresan las palabras por pantalla y muestra el resultado pero yo no lo quiero asi ps lo quiero hacer internamente y que salga de una vez el resultado por pantalla ........ porfas ayudenme en esta!! pliss! se los agradeceria mucho!! ;-)


18-Jul-2009 22:04
Nacho Cabanes (+83)

Si haces

read(fichero,ch);

leerás carácter a carácter, y podrás contar caracteres, pero no palabras.

Para contar palabras, puede ser más cómo leer frase (string) a frase, y después analizar la frase.

En cuanto a la forma de analizar la frase, una de las ideas más sencillas es contar los espacios, pero falla si hay dos espacios seguidos, o si no se ha usado algún espacio donde realmente sí debería haberlo, como "hola,que".

Una forma más efectiva, pero algo más difícil de programar, es tener una lista de "separadores" (espacio, coma, punto, etc). Cada vez que encuentres un separador y que lo que había antes de él no fuera también separador, quiere decir que has encontrado una palabra.

leer(fichero, frase)
para posicion = 2 hasta longitud (frase)
-- si frase[posicion] es separador y frase[posicion-1] no es separador
---- entonces palabras := palabras + 1

Sólo falta afinar que si al final de la frase no hay un separador, tienes que contar una palabra más, como en "hola, que tal".

Bueno, claro y tienes que convertir esas ideas a Pascal: para=for, longitud=length, etc. Para ver si es un separador puedes usar "conjuntos" y la operación "in" para ver si pertenece a ellos, como en

if letra in ['a', 'e', 'i', 'o'] ...

Inténtalo y cuéntanos si ha salido bien.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)