0

特定のルールに従って、特定のテキストファイル内の単語、音節、および文の数を計算するプログラムを作成しています。

文は、で終わる空白で区切られた単語のコレクションです。また !また ?ただし、これも文です。

Greetings, earthlings..

私がこのプログラムにアプローチした方法は、getchar()を使用して一度に1文字ずつテキストファイルをスキャンすることです。メモリ内のテキストファイル全体を操作することは禁止されています。一度に1文字または単語にする必要があります。

これが私のジレンマです。getchar()を使用すると、現在の文字が何であるかを知ることができます。EOF文字が見つかるまで、ループでgetchar()を使い続けます。ただし、文の最後に複数のピリオドがある場合でも、それは1つの文です。つまり、分析している文字の前と後の最後の文字が何であるかを知る必要があります。私の考えでは、これは別のgetchar()呼び出しを意味しますが、次の文字をスキャンするときに問題が発生します(文字がスキップされるようになりました)。

上記の文が実際に文であると私がどのように判断できるかについて誰かが提案を持っていますか?

ありがとう、そしてあなたが説明または何か他のものを必要とするならば、私に知らせてください。

4

2 に答える 2

4

非常に単純なステート マシンを実装するだけで済みます。文の終わりを見つけたら、新しい文の始まりを見つけるまでその状態のままになります (通常、これは . ! や ? などのターミネータ以外の非空白文字です)。

于 2010-02-05T13:51:48.823 に答える
0

拡張可能な文法が必要です。たとえば、正規表現を見て、作成してみてください。

一般に、人間の言語は多様であり、特に分析する口語や異なる言語がある場合は、簡単に解析できません。一部の言語では、単語と文の違いが明確でない場合もあります

于 2010-02-05T13:52:39.250 に答える