配列と乱数について

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

配列と乱数について

#1

投稿記事 by めんこ » 8年前

乱数を使って小数を格納して格納された小数を大きい順にソートするプログラムを作ったのですが、
実行したときに、最初のnに格納されている数と最後に格納されているnの数が真ん中のソートの部分で変わってしまい、
さらに出力された数字が一部分を除入て0.000になってしまいます。
どうすれば大きい順にソートされるでしょうか?

コード:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define M 5

int main(void)
{
	double n[100];
	int i, s, t, j, num;

	srand((unsigned int)time(NULL));

	for (i = 0; i < M; i++){
		n[i] = (rand() % 100) / 100.0;
		printf("%2f\n", n[i]);
	}

	for (s = 0; s < M - 1; s++){
		for (t = s + 1; t < M; t++){
			if (n[t] > n[s]){
				num = n[t];
				n[t] = n[s];
				n[s] = num;
			}
		}
	}


	for (j = 0; j < M; j++){
		printf("\n%2f\n", n[j]);
	}
	return 0;

}

だんごさん
記事: 273
登録日時: 12年前

Re: 配列と乱数について

#2

投稿記事 by だんごさん » 8年前

21行目、num = n[t];
ここのnumはint型です。0.xxxの値を代入すると0になります。
ですので、23行目、n = num;では0を代入することになります。
numをdouble型にしてみてはいかがでしょう。

と思ったら同じトピックがありましたね。
配列と乱数について
 Dango San

閉鎖

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