[ Foro de Pascal ]
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.)