単語を数えるプログラムについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Asin

単語を数えるプログラムについて

#1

投稿記事 by Asin » 13年前

単語をカウントするプログラムについてです。

ファイルから単語を二次元配列に取り込み、その単語が何個あるかをカウントしたいのですがうまくいきません・・・

word1という二次元配列にファイルから単語を全部取り込み、
word2という二次元配列に重複する単語は重複しないように文字列を格納して、
それぞれの単語が何個あるかをカウントしようとしているのですが、うまくいけません・・・

コード:

total = 0;
for (i = 0; i < t_word1; i++) {
  sscanf(word1[i], "%s", word2[total]);
  flag = -1;

  for (j = 0; j < total; j++) {
    if (strcmp(word1[j], word2[total]) == 0) {
      flag = j;
    }
  }

  if (flag < 0) { /* 重複が無いとき、新しい単語を登録 */
   sscanf(word1[i], "%s", word2[total]);
   word_count[total++] = 1;
  }
  else {
    word_count[flag]++;
  }
}

上記はカウント部分のつもりで書いたのですが・・・
重複した単語までword2に格納してしまっているし、カウント自体もうまくできていません・・・

どうかご助力お願いします!

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 単語を数えるプログラムについて

#2

投稿記事 by みけCAT » 13年前

コード:

if (strcmp(word1[j], word2[total]) == 0) {
この部分で、最初がword1ではなくword2であるべきではないでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Asin

Re: 単語を数えるプログラムについて

#3

投稿記事 by Asin » 13年前

ご指摘のあったところを修正しました

word1の数が少ないとうまくいくのですが、膨大な数となると
セグメンテーション違反です (コアダンプ)
となってしまいます・・・


解決方法はないでしょうか?

Asin

Re: 単語を数えるプログラムについて

#4

投稿記事 by Asin » 13年前

すいません
word2の2次元配列の数が足りないだけでした・・・

お騒がせしました
ありがとうございました!

閉鎖

“C言語何でも質問掲示板” へ戻る