掲示板利用宣言

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

 私は

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

掲示板2

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

No.28454

最大値
投稿者---J(2006/10/13 12:43:04)


適当な1000個の実数を生成し、その実数の中から最大値を出力したいのですが、これだけ数が多くなるとよくわかりません。ヒントでもよろしいのでご指導よろしくお願いします。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:最大値 28455 nop 2006/10/13 12:58:07
<子記事> Re:最大値 28456 nano 2006/10/13 12:58:13
<子記事> Re:最大値 28457 123456789 2006/10/13 13:19:37
<子記事> Re:最大値 28479 shu 2006/10/14 19:29:10


No.28455

Re:最大値
投稿者---nop(2006/10/13 12:58:07)


>適当な1000個の実数を生成し、その実数の中から最大値を出力したいのですが、これだけ数が多くなるとよくわかりません。ヒントでもよろしいのでご指導よろしくお願いします。

10個でも100個でも10万個でも、
やることは同じだと思いますが…?
具体的に何が判らないのですか?


とりあえず、以下は守りましょう。


【掲示板利用宣言】
●課題の丸投げはしません。
●ソースの添付は「HTML変換ツール」で字下げします。
●環境(OSとコンパイラ)や症状は具体的に詳しく書きます。



この投稿にコメントする

削除パスワード

No.28456

Re:最大値
投稿者---nano(2006/10/13 12:58:13)


1)1個目の実数を生成する。
2)1個目の実数を、最大値とする。
3)2個目〜1000個目について、3−1)〜3−2)を繰り返す。
3−1)実数を生成する。
3−2)生成した実数がその時点での最大値より大きければ、
その実数を新たに最大値とする。
4)最大値を出力する。

生成する実数の数が百万でも一億でも、同じロジックです。


この投稿にコメントする

削除パスワード

No.28457

Re:最大値
投稿者---123456789(2006/10/13 13:19:37)


実数の生成は、まぁ取りあえずrandでいいでしょう。

まず最初に、2つの数でどちらが大きいか、やってみましょう。
次に10個の数で最大値を求めてみましょう。
10個ができたら100個も1000個も1000000000個も同じです。




この投稿にコメントする

削除パスワード

No.28479

Re:最大値
投稿者---shu(2006/10/14 19:29:10)


>適当な1000個の実数を生成し、

この部分が問題なのかな。

    for (i = 0; i < 1000; i++) {
        scanf("%lf", &data);
    }
    
みたいなことやってたら、数が多すぎて大変。
ランダムな整数なら、下のように書いたりしますが、

    srand((unsigned) time(NULL));
    for (i = 0; i < 1000; i++) {
        data = rand() % N;
    }
    
ランダムな実数のときはどうなのだろうか?
キャストしただけの同じ書き方で良いのだろうか?

「実数の乱数」「ランダムな実数」などで良く調べてみてはどうでしょう。





この投稿にコメントする

削除パスワード

No.28481

Re:最大値
投稿者---shu(2006/10/14 19:59:23)


	//	こういう書き方もありかも
	srand((unsigned) time(NULL));
	for (i = 0; i < 1000; i++) {
		data = 0.01 * (rand() % 100);
	}
	
	最低桁(ここでは0.01)の倍数という書き方をしてみた。



この投稿にコメントする

削除パスワード

No.28509

Re:最大値
投稿者---shu(2006/10/18 19:28:54)


//
//	結果だけ……
//

#include <stdio.h>
#include <stdlib.h>

#define N 1000

int main(void)
{
    int num, max;
    int i;

    srand((unsigned) time(NULL));
    for (i = 0; i < N; i++) {
        num = rand();
        if (i == 0 || num > max) {
            max = num;
        }
    }

    //	結果だけ実数化
    printf("%f", 0.01 * max);

    return 0;
}



この投稿にコメントする

削除パスワード

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