掲示板利用宣言

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

 私は

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

掲示板2

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

No.24683

ファイルの中身の参照。
投稿者---yuki(2005/12/11 00:45:04)


問1. 0 以上10 未満のランダムな整数を1000 個作成して,
それらをファイルに書き込む。各データはスペースで
区切られるものとする。
問2. 問1 で作成したデータを読み込んで,0 から9 までの数が
それぞれ何個あるのかを確認してみよう。
方法としては,10 個の要素を持つ配列を使い,0 から9 までの数を
その配列の添え字に対応させて個数を数えること。

という問題が出まして、問1はすぐ出来たのですが、
問2で詰まっています・・・。

2重ループを使って、10個の要素を持つ配列の添え字と、
対応させて個数を数えようとしたんですが、先生に提出したら、
2重ループなんか使う必要が無いといって、返されてしまいました・・。
(問1で0 以上10 未満のランダムな整数を1000 個作成した時に
配列を使ったんで)

他に、どういう方法があるんでしょうか??
ヒントをいただけたらありがたいです。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ファイルの中身の参照。 24684 まきじ 2005/12/11 00:48:42
<子記事> Re:ファイルの中身の参照。 24693 shu 2005/12/11 01:18:27
<子記事> Re:ファイルの中身の参照。 24703 wiz 2005/12/11 02:37:08


No.24684

Re:ファイルの中身の参照。
投稿者---まきじ(2005/12/11 00:48:42)


>2重ループなんか使う必要が無いといって、返されてしまいました・・。

fscanf(fp,"%d",&n); を EOF まで繰り返し n を利用してカウント。


この投稿にコメントする

削除パスワード

No.24690

Re:ファイルの中身の参照。
投稿者---yuki(2005/12/11 01:05:22)


>>fscanf(fp,"%d",&n); を EOF まで繰り返し n を利用してカウント。

>&nというのは、10個の要素を持つ配列のことですよね??


この投稿にコメントする

削除パスワード

No.24696

Re:ファイルの中身の参照。
投稿者---まきじ(2005/12/11 01:26:01)


>>&nというのは、10個の要素を持つ配列のことですよね??

ファイルから読み込んだ一つの数値です。


この投稿にコメントする

削除パスワード

No.24693

Re:ファイルの中身の参照。
投稿者---shu(2005/12/11 01:18:27)


>2重ループを使って、10個の要素を持つ配列の添え字と、
>対応させて個数を数えようとしたんですが、先生に提出したら、
>2重ループなんか使う必要が無いといって、返されてしまいました・・。

2重ループ使ってても、全くかまわないと感じます。
2重ループ使わないほうが、効率的なのかもしれないが、
やっぱり、2重ループ使ってても、全くかまわないと感じます。

yukiさんがそう思って作った、yukiさん作のプログラムである以上、
先生だろうとなんだろうと、易々と否定されるものじゃない。
実際、先生がどういったのかはわかりませんが、返された理由が良くわからない。

良かったら、返されたプログラムを見せてください。


この投稿にコメントする

削除パスワード

No.24695

Re:ファイルの中身の参照。
投稿者---yuki(2005/12/11 01:24:16)


>>良かったら、返されたプログラムを見せてください。

>申し訳ないです。ファイルはOKもらえなかったんで、
削除しちゃったんです・・・・。時間内に出すのが基本で、
受け取ってもらえないと、点数が下がるっていうシステムなんで(泣)
受け取ってもらえなかったんで、ムカついて消した気がします(笑)

もう一度頑張って考えて見ます。




この投稿にコメントする

削除パスワード

No.24703

Re:ファイルの中身の参照。
投稿者---wiz(2005/12/11 02:37:08)


>2重ループを使って、10個の要素を持つ配列の添え字と、
>対応させて個数を数えようとしたんですが、先生に提出したら、
>2重ループなんか使う必要が無いといって、返されてしまいました・・。
>(問1で0 以上10 未満のランダムな整数を1000 個作成した時に
>配列を使ったんで)

なかなか面白い先生ですね。
2重ループ指摘するなら問1で配列を使ったところも指摘したほうが。。。

以下回答サンプルです。

//問1 1000個の数字をランダムに書き出す
#include <stdio.h>
#include <stdlib.h>
int main ( void )
{
    FILE *fp = NULL;
    int i;

    fp = fopen( "data.txt", "w");
    if( fp == NULL ){
        printf("data file open error");
        return 1;
    }

    for( i=0; i<1000; i++){
        fprintf( fp,"%d ",rand() % 10);
    }

    fclose( fp );
    return 0;
}

//問2 問1のファイルを読んで数字の出た個数を調べる
#include <stdio.h>
int main ( void )
{
    FILE *fp = NULL;
    int i,n;
    int Number[10] = { 0 };

    fp = fopen( "data.txt", "r" );
    if( fp == NULL ){
        printf("data file open error");
        return 1;
    }

    while( fscanf( fp, "%d", &n ) != EOF ){
        Number[n]++;
    }

    fclose( fp );

    for( i=0; i<10; i++){
        printf("Number %d = %4d個\n", i, Number[i]);
    }

    return 0;
}


やりかたはいっぱいあるのでがんばってください。


この投稿にコメントする

削除パスワード

No.24710

Re:ファイルの中身の参照。
投稿者---yuki(2005/12/11 21:50:30)


皆様、ありがとうございます。
頑張って、作ってみたいと思います。


この投稿にコメントする

削除パスワード

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