私は宿題のための簡単なスペルチェックプログラムを書こうとしています。基本的には、80,000語の辞書を配列に入れてから、その単語が配列内にあるかどうかをバイナリ検索します。バイナリ検索メソッドを記述すると、配列内に単語が見つかったときに1(真)を返すのに苦労します。 [Homework}
私は問題は、最初のif文で行い、ブレークして1行返すことですが、間違っている可能性があります。私がしようとしているのは、配列の中点の単語が文字列と同じなら、if文とwhileループから抜け出し、同じでなければ1を返すようにすることです私はそれを続けて欲しい。
現在、プログラムを実行するたびに、単語が実際に辞書に入っているかどうかにかかわらず、単語が見つからないと表示されます。
私が間違っているところについての助けがあれば大歓迎です。
int binarySearch(char string[9]) {
int low = 0;
int high = NUMBEROFDICTIONARYWORDS;
int midPoint;
char midPointWord[9];
while(high > (low + 1)) {
midPoint = (low + high)/2;
midPointWord[9] = dictionary[midPoint];
if(strcmp(string, midPointWord) == 0) {
return 1;
break;
break;
} else
if(strcmp(string, midPointWord) < 0) {
high = midPoint;
} else
low = midPoint;
}
return 0;
}
「辞書」の定義はできますか?問題はそれが 'char * dictionary []'でなければならないことを意味しますが、あなたの使用法は 'char dictionary []'を意味します。 –
私はこれを次のように定義しました:string dictionary [NUMBEROFDICTIONARYWORDS]; –
そして、def char string [9]とタイプします。 –