乱数の並び替え

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

乱数の並び替え

#1

投稿記事 by ブルースカイ » 10年前

こんばんは、初めまして。
私はC言語の初心者です。
1~100までの乱数を100個作り、小さい順に並べるという問題を解いています。
random_seed()を使ってはいけないので、苦戦しています。

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

Re: 乱数の並び替え

#2

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

ここは日記ではありません。
課題の丸投げは禁止です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

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

Re: 乱数の並び替え

#3

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

ブルースカイ さんが書きました:random_seed()を使ってはいけないので、苦戦しています。
random_seed()の話題が出るということは、おそらくFortranをお使いになっているのですね。
C言語の初心者であることがどうかかわってくるかはよくわかりませんが、頑張ってください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ブルースカイ

乱数の並び替え

#4

投稿記事 by ブルースカイ » 10年前

書き方のご指摘を受けました。
内容が曖昧で、申し訳ありません。

int i, a [100] ;
srand(10);
for(i=99;i>=0;i-1)

具体的にこれ以後が分かりません。
小さい順に乱数を並べる場合、一回ずつifを使うべきでしょうか?

box
記事: 2002
登録日時: 15年前

Re: 乱数の並び替え

#5

投稿記事 by box » 10年前

人が書いたコードのおかしなところを探してみるのも勉強法の一つです。

コード:

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

#define N (100)

void init(int *a)
{
    int i;

    for (i = 0; i < N; i++) {
        a[i] = rand() % 100 + 1;    // とりあえずrand()で十分でしょう
    }
}

void sort(int *a)
{
    int i, j, t;

    // とりあえずバブルソートで十分でしょう
    for (i = 0; i < N - 1; i++) {
        for (j = i + 1; j < N; j++) {
            if (a[i] > a[j]) {
                t = a[i], a[i] = a[j], a[j] = t;
            }
        }
    }
}

void print(int *a)
{
    int i;

    for (i = 0; i < N; i++) {
        printf("%d ", a[i]);
    }
    putchar('\n');
}

int main(void)
{
    int a[N];

    srand((unsigned) time(NULL));
    init(a);
    sort(a);
    print(a);
    return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

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

Re: 乱数の並び替え

#6

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

ブルースカイ さんが書きました:書き方のご指摘を受けました。
内容が曖昧で、申し訳ありません。
まず使用する言語を指定してください。
ブルースカイ さんが書きました:小さい順に乱数を並べる場合、一回ずつifを使うべきでしょうか?
二分決定木をif文で表現することで小さい順に並べることはできるでしょうが、やるべきではありません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

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