ページ 11

乱数の並び替え

Posted: 2015年6月13日(土) 21:58
by ブルースカイ
こんばんは、初めまして。
私はC言語の初心者です。
1~100までの乱数を100個作り、小さい順に並べるという問題を解いています。
random_seed()を使ってはいけないので、苦戦しています。

Re: 乱数の並び替え

Posted: 2015年6月13日(土) 22:28
by みけCAT
ここは日記ではありません。
課題の丸投げは禁止です。

Re: 乱数の並び替え

Posted: 2015年6月13日(土) 22:36
by みけCAT
ブルースカイ さんが書きました:random_seed()を使ってはいけないので、苦戦しています。
random_seed()の話題が出るということは、おそらくFortranをお使いになっているのですね。
C言語の初心者であることがどうかかわってくるかはよくわかりませんが、頑張ってください。

乱数の並び替え

Posted: 2015年6月13日(土) 23:50
by ブルースカイ
書き方のご指摘を受けました。
内容が曖昧で、申し訳ありません。

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

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

Re: 乱数の並び替え

Posted: 2015年6月14日(日) 00:24
by box
人が書いたコードのおかしなところを探してみるのも勉強法の一つです。

コード:

#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;
}

Re: 乱数の並び替え

Posted: 2015年6月14日(日) 00:27
by みけCAT
ブルースカイ さんが書きました:書き方のご指摘を受けました。
内容が曖昧で、申し訳ありません。
まず使用する言語を指定してください。
ブルースカイ さんが書きました:小さい順に乱数を並べる場合、一回ずつifを使うべきでしょうか?
二分決定木をif文で表現することで小さい順に並べることはできるでしょうが、やるべきではありません。