バブルソート

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

バブルソート

#1

投稿記事 by ケロリン » 9年前

これだと、整列させたときに、

たとえば、番号順に昇順に整列させたとき、
101 94

というふうに、{}の中のペアのまま動いてくれないのですが、どうしたらいいのでしょうか?

コード:

 
#include <stdio.h>
int main(void) {
	int n, m, c, bangou[10][2] = { {103,94},{101,75},{104,95},{106,76},{108,64},{102,85},{107,99}, {110,81},{109,80},{105,88} }, i, j, k, l;

	printf("学生の得点データを整列します。\n");
	printf("何について整列しますか?\n");
	printf("番号順-0  得点順-1 :");
	scanf("%d", &n);
	printf("整列の順番は?\n");
	printf("昇順-0 降順-1 :");
	scanf("%d", &m);
	/*番号順*/
	if (n == 0) {
		/*昇順*/
		if (m == 0) {
			j = 0;
			for (k = 0; k < 10; k++) {
				for (i = 9; i > k; i--) {
					if (bangou[i][j] < bangou[i - 1][j]) {
						c = bangou[i - 1][j];
						bangou[i - 1][j] = bangou[i][j];
						bangou[i][j] = c;
					}

				}
			}
		}
		/*降順*/
		if (m == 1) {
			j = 0;
			for (k = 0; k < 10; k++) {
				for (i = 9; i > k; i--) {
					if (bangou[i][j] > bangou[i - 1][j]) {
						c = bangou[i - 1][j];
						bangou[i - 1][j] = bangou[i][j];
						bangou[i][j] = c;
					}

				}
			}
		}


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

	/*点数順*/
	if (n == 1) {
		/*昇順*/
		if (m == 0) {
			j = 1;
			for (i = 0; i < 10; i++) {
				for (k = 9; k > i; k--) {
					if (bangou[k][j] < bangou[k - 1][j]) {
						c = bangou[k - 1][j];
						bangou[k - 1][j] = bangou[k][j];
						bangou[k][j] = c;
					}
				}
			}
		}
		/*降順*/
			if (m == 1) {
				j = 1;
				for (i = 0; i < 10; i++) {
					for (k = 9; k > i; k--) {
						if (bangou[k][j] > bangou[k - 1][j]) {
							c = bangou[k - 1][j];
							bangou[k - 1][j] = bangou[k][j];
							bangou[k][j] = c;
						}
					}
				}
			}
		
		for (i = 0; i < 10; i++) {
			printf("%d = %d \n", bangou[i][0], bangou[i][1]);
		}


	}
	return 0;
}


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

Re: バブルソート

#2

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

ケロリン さんが書きました:{}の中のペアのまま動いてくれないのですが、どうしたらいいのでしょうか?
{}の中のペアのまま動かすようにするといいと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ケロリン

Re: バブルソート

#3

投稿記事 by ケロリン » 9年前

みけCAT さんが書きました:
ケロリン さんが書きました:{}の中のペアのまま動いてくれないのですが、どうしたらいいのでしょうか?
{}の中のペアのまま動かすようにするといいと思います。

どうやってやるんでしょうか・・・

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

Re: バブルソート

#4

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

ケロリン さんが書きました:
みけCAT さんが書きました:
ケロリン さんが書きました:{}の中のペアのまま動いてくれないのですが、どうしたらいいのでしょうか?
{}の中のペアのまま動かすようにするといいと思います。

どうやってやるんでしょうか・・・
{}の中のペアのまま動かすようなコードに書き換えればいいでしょう。
例えば

コード:

if (bangou[i][j] < bangou[i - 1][j]) {
	for (l = 0; l < 2; l++) {
		c = bangou[i - 1][l];
		bangou[i - 1][l] = bangou[i][l];
		bangou[i][l] = c;
	}
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ケロリン

Re: バブルソート

#5

投稿記事 by ケロリン » 9年前

どうやってやるんでしょうか・・・


{}の中のペアのまま動かすようなコードに書き換えればいいでしょう。
例えば

コード:

if (bangou[i][j] < bangou[i - 1][j]) {
	for (l = 0; l < 2; l++) {
		c = bangou[i - 1][l];
		bangou[i - 1][l] = bangou[i][l];
		bangou[i][l] = c;
	}
}
[/quote]


どこをかきかえればいいのですか?
初心者ですみません・・

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

Re: バブルソート

#6

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

ケロリン さんが書きました:どこをかきかえればいいのですか?
要素を交換する所をかきかえればいいです。
ケロリン さんが書きました:初心者ですみません・・
少しは自分で考えていますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ケロリン

Re: バブルソート

#7

投稿記事 by ケロリン » 9年前

みけCAT さんが書きました:
ケロリン さんが書きました:どこをかきかえればいいのですか?
要素を交換する所をかきかえればいいです。
ケロリン さんが書きました:初心者ですみません・・
少しは自分で考えていますか?


プログラムはできました!
理解ができないのですが、どういうことなのでしょうか?

閉鎖

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