- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:カウント配列)
カウント配列を使った単語の出現頻度の計算について
このQ&Aのポイント
- カウント配列を使った単語の出現頻度の計算方法について教えてください。
- for文と条件分岐を使って、単語の出現頻度を計算しようとしていますがうまくいきません。
- 初心者なので、どのように修正すると良いか教えていただけますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ごめんなさい、カテゴリは JavaScript でしたね…。見落としてました。 ならば次のとおりでOKです。下に書いた(2)は読み飛ばしてください。 for(i = 0; i < a ; i = i + 1) { if (key == tango[i]) { hindo[i] = hindo[i] + 1; break; } } if (i >= a) { tango[a] = key; a = a + 1; }
その他の回答 (1)
- motohri
- ベストアンサー率50% (15/30)
回答No.1
言語は C で良いのでしょうか?ならば、こんな感じです。 for(i = 0; i < a ; i = i + 1) { if (strcmp(key, tango[i]) == 0) { hindo[i] = hindo[i] + 1; break; } } if (i >= a) { tango[a] = key; a = a + 1; } ポイントは次のとおりです。 (1) for の中の条件は i <= a ではなく i < a です。C言語では、配列に a 個の要素がある場合、tango[0] ~ tango[a - 1]となるためです。 (2)key と tango[i] を「==」で比較してしまうと、ポインタを比較するだけで文字列の比較になりません。そこで、文字列の比較には strcmp 関数を用います。 (3)ループを a 回回っても一致する単語がなかった場合に、tango[a] に新しい単語を登録すれば良いので、単語を登録する部分はループの外に書き、if の条件は i >= a とします。
お礼
お礼が遅れすいませんでした。 迅速かつ丁寧な回答で、大変助かりました。 おかげ様でうまくいきました! また質問をすることがあるかと思いますが、 その節はよろしくご教授願います。