Frage

Ich erstelle ein Programm, das bestimmte Regeln befolgt, um zu einer Anzahl der Wörter, Silben und Sätze in einer bestimmten Textdatei zu zählen.

Ein Satz ist eine Sammlung von Wörtern, die durch Whitespace getrennt sind, die in a endet. oder ! oder ? Dies ist jedoch auch ein Satz:

Greetings, earthlings..

Die Art und Weise, wie ich dieses Programm angesprochen habe, besteht darin, die Textdatei jeweils mit GetChar () durch die Textdatei zu scannen. Es ist mir verboten, mit der gesamten Textdatei im Speicher zu arbeiten. Es muss jeweils ein Zeichen oder ein Wort sein.

Hier ist mein Dilemma: Verwenden von GetChar () kann ich herausfinden, was der aktuelle Charakter ist. Ich benutze einfach GetChar () in einer Schleife, bis es den EOF -Charakter findet. Aber wenn der Satz am Ende mehrere Zeiträume hat, ist er immer noch ein einzelner Satz. Was bedeutet, dass ich wissen muss, was der letzte Charakter vor dem, den ich analysiere, und den danach war. Durch mein Denken würde dies einen anderen GetChar () -Anruf bedeuten, aber das würde Probleme verursachen, wenn ich im nächsten Charakter scannte (es hat jetzt einen Charakter übersprungen).

Hat jemand einen Vorschlag, wie ich feststellen könnte, dass der obige Satz tatsächlich ein Satz ist?

Danke, und wenn du Klarstellung oder irgendetwas anderes brauchst, lass es mich wissen.

War es hilfreich?

Lösung

Sie müssen nur eine sehr einfache Implementierung implementieren Zustandsmaschine. Sobald Sie das Ende eines Satzes gefunden haben, bleiben Sie in diesem Zustand, bis Sie den Beginn eines neuen Satzes gefunden haben (normalerweise wäre dies ein nicht weißer Raumcharakter als ein Terminator wie.! Oder?).

Andere Tipps

Sie benötigen eine erweiterbare Grammatik. Suchen Sie beispielsweise bei regulären Ausdrücken und versuchen Sie, einen zu bauen.

Im Allgemeinen ist die menschliche Sprache vielfältig und nicht leicht analysiert, insbesondere wenn Sie umgangssprachliche Sprache oder verschiedene Sprachen haben. In einigen Sprachen kann es nicht einmal klar sein, was die Unterscheidung zwischen einem Wort und einem Satz ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top