Question

Je crée un programme qui suit certaines règles pour aboutir à un décompte des mots, des syllabes et des phrases dans un fichier texte donné.

Une phrase est un ensemble de mots séparés par un espace qui se termine par une. ou ! ou ? Cependant, cela est également une phrase:

Greetings, earthlings..

La façon dont je l'ai approché ce programme est de parcourir le fichier texte un caractère à la fois à l'aide getchar (). Je suis interdit de travailler avec le fichier de texte entier en mémoire, il doit être un caractère ou un mot à la fois.

Voici mon dilemme: en utilisant getchar () je peux savoir ce que le personnage actuel. Je viens de continuer à utiliser getchar () dans une boucle jusqu'à ce qu'il trouve le caractère EOF. Mais, si la peine a plusieurs périodes à la fin, il est encore une seule phrase. Ce qui signifie que je dois savoir ce que le dernier caractère était avant celui que je suis analyse, et celle d'après. Grâce à ma façon de penser, cela signifierait un autre appel getchar (), mais cela créerait des problèmes quand je vais à numériser le caractère suivant (son maintenant un caractère sautées).

Quelqu'un at-il une suggestion quant à la façon dont je pourrais déterminer que la phrase ci-dessus, est en effet une phrase?

Merci, et si vous avez besoin d'éclaircissements ou toute autre chose, laissez-moi savoir.

Était-ce utile?

La solution

Vous avez juste besoin de mettre en œuvre un machine d'état . Une fois que vous avez trouvé la fin d'une phrase que vous restez dans cet état jusqu'à ce que vous trouviez le début d'une nouvelle phrase (normalement ce serait un espace non-blanc autre qu'un terminateur tel que.! Ou?).

Autres conseils

Vous avez besoin d'une grammaire extensible. Regardez par exemple les expressions régulières et essayer de construire un.

En général la langue humaine est diverse et analysable pas facilement, surtout si vous avez la parole dialectal pour analyser ou langues différentes. Dans certaines langues, il peut ne pas être encore clairement ce que la distinction entre un mot et une phrase est .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top