2017-02-05 13 views
2

評価のためにスペルチェッカーを作成する必要があります。私は仕事を始めることができます - 私はすべての辞書の内容のテキストファイルを持っています、私はどのようにファイルを読み込むかを選択したファイルを辞書ファイルと比較する方法をコードしています。発見されたもの、そして彼らの正しいバージョン。大きな問題は、どうやってこれを行うのか分かりません。私のコードは今、ファイル間に違いがあると言うことができます。しかし、私はstrcmpが何かが間違っている場合、文字列、単語ごとに文字列をチェックする方法を知らない。Cで単語のスペルチェックを実装する方法は?

辞書ファイルはすべて単語なので、私のプログラムが他のファイルを読み込んでいる場合は比較し、ファイルにないすべての単語をエラーのある新しい出力ファイルに書き込むと、これらの出力エラー単語はランダムな言葉でもあり、テキストファイルにもテキストファイルにも含まれていません。

私は自分の問題をうまく説明し、この問題を解決する方法を教えてくれる誰かがいることを願っています。私はコードを尋ねることさえしない、私はちょうど私がプログラムの残りの部分をどのようにコード化する必要があるか考えておく必要がある。申し訳ありませんが、私の英語は第二言語ですので、文法上の間違いはまだあります。ここで

+1

できるようになりますあなたは簡単に突き刺すことを特定し、記憶には大きな負担をかけることはありません。このタスクのための可能なものは[サフィックスツリー](https://en.wikipedia.org/wiki/Suffix_tree)です。辞書ファイルを読み込んでテストファイルを読み込む必要があります。しかし、それはまだ広すぎるので、あなたの質問はトピックから外れています。 – StoryTeller

+1

あなたのコードを投稿できますか? –

+0

これを参照してくださいhttp://stackoverflow.com/questions/346757/how-do-spell-checkers-work?rq=1 –

答えて

3

あなたが続くことができるいくつかの手順は次のとおりです。

  • あなたは(strcmp付き)辞書順にソートされた文字列の配列は、例えば、メモリ構造に辞書を読み込みます。

  • は、行毎にファイルを読み取り、各ラインのための手順を反復:

    • ライン読み出しとしてスペース、同じ長さのハイライトラインを初期化します。

    • strcspn()で単語の一部にできない文字をスキップするには、インデックスiを保存します。

    • 単語の一部になる可能性のある文字をスキャンしてstrspn()とすると、この数字はnに保存されます。
    • nが0の場合単語が見つからない場合、これはライン
    • の端部は、(潜在的にケースを無視して)辞書内n文字
    • とインデックスiで単語を検索され、対応する文字を設定します警告行には^文字が含まれています。
    • インデックスi += nを更新し、繰り返します。
  • 少なくとも1つの単語が行内に見つからなかった場合は、行と警告行を出力します。

研究これらの標準的な機能:あなたは、データ構造を考え出す必要がある

  • strspn()
  • strcspn()
  • qsort()
  • bsearch()
+0

ありがとう、私はdellonaryファイルとサンプルファイルでスペルチェックを行います:)今すぐ私はちょうど句読点を削除することに問題がある:/ –

関連する問題