• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:カウント配列)

カウント配列を使った単語の出現頻度の計算について

このQ&Aのポイント
  • カウント配列を使った単語の出現頻度の計算方法について教えてください。
  • for文と条件分岐を使って、単語の出現頻度を計算しようとしていますがうまくいきません。
  • 初心者なので、どのように修正すると良いか教えていただけますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • motohri
  • ベストアンサー率50% (15/30)
回答No.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; }

burnquist
質問者

お礼

お礼が遅れすいませんでした。 迅速かつ丁寧な回答で、大変助かりました。 おかげ様でうまくいきました! また質問をすることがあるかと思いますが、 その節はよろしくご教授願います。

その他の回答 (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 とします。

関連するQ&A