掲示板ランキング  レギュラー(グァテマラ)  レギュラー(ブラジル)  レギュラー(ハワイコナ)


掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.7424

単語の出現頻度
投稿者---苺ぱんだ(2007/05/14 10:49:15)


単語の出現頻度を表示するプログラムを作成しています。
コンパイルできたんですが、いざ実行したら、
ちゃんと表示されませんでした。
どこが、いけないか分からないので、
すみませんが、見ていただけたらと思います。
プログラムと出力は以下の通りです。


●プログラム
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

struct data {
        char tango[100];
        int count;
};

int main(int argc, char *argv[])
{
        FILE *fp;
        char c;

        struct data a[100];
        char moji[31];
        int i,n,j,m;

        /*ファイルの読み込み*/
        fp=fopen("a.txt","r");

        if(argc != 2) {
                fprintf(stderr,"argument required\n");
                return 1;
        }

        if(fp == NULL) {
                fprintf(stderr,"file not open\n");
                return 1;
        }

        /*判断*/
        for(j=0,n=0;(c=fgetc(fp)) != EOF;) {
                /* cがアルファベットなら*/
                if(isalpha(c)) {
                        moji[j]=tolower(c);
                        j++;
                }
                else {
                        moji[j]='\0';
                        for(m=0;m<n;m++) { /*登録された時*/
                               if(strcmp(a[m].tango,moji)==0) {
                                      a[m].count++;
                                       break;
                               }
                        }
                        /*登録されなかった時*/
                        if(m==n && strlen(moji) != 0) {
                               a[n].count=1;
                               n++;
                        }
                        j=0;
                }
        }
        fclose(fp);

        /*出力*/
        for(i=0;i<n;i++) {
                fprintf(stdout,"%s : %d\n",a[i].tango,a[i].count);
        }
        return 0;
}


●読み込んだテキストa.txt
this is a pen
It is a cute


●表示
 : 1
 : 1
 : 1
 : 1
 : 1
 : 1
 : 1
 : 1



単語が表示されてない…
a は2つあるはずなのに、全部”1”と表示されてる…

すみませんが、お願いします。




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:単語の出現頻度 7425 bugs 2007/05/14 11:04:24
<子記事> Re:単語の出現頻度 7426 asd 2007/05/14 11:05:24
<子記事> Re:単語の出現頻度 7427 2007/05/14 17:42:41


No.7425

Re:単語の出現頻度
投稿者---bugs(2007/05/14 11:04:24)


構造体のメンバーtangoに何かの値を代入している形跡がありません。


この投稿にコメントする

削除パスワード

No.7426

Re:単語の出現頻度
投稿者---asd(2007/05/14 11:05:24)


<pre>
>/*登録されなかった時*/
>if(m==n && strlen(moji) != 0) {
> a[n].count=1;
> n++;
>}
</pre>

読み込んだ単語が初めて出てきたものの場合、その単語を記録しておく必要があるため、
このif文で

strcpy(a[n].tango, moji);

などとして単語を記録しておく必要がありませんか?


この投稿にコメントする

削除パスワード

No.7427

Re:単語の出現頻度
投稿者---あ(2007/05/14 17:42:41)


どうでもいいけど、今うちの会社でやってる新人研修の課題と一緒。
学校か、会社か知らないけど、分からないなら先生か先輩に
聞いた方が早いと思う。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧





掲示板提供:(有)リアル・インテグリティ