教えてください

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

教えてください

#1

投稿記事 by つい » 8年前

コード:

#include<stdio.h>

int main(void)
{
	int i, j, a, b;
	double k, c;

	double x[20] = { -1, -0.39, 0, -4.1, -6, -3, -4.5, 0, 
		-0.99, -3,  -4.1,  -3  ,-99, -2.4,  -2.6, -1.6, -2.6,  -1.0, -1, -5.4 };

	double y[20] = { -2,0, 0,1.1, 6, -3, -3.1, 0.1, 0.5, -2, -1.9,
		1.5, 1.5, -2, -3.1,  -3, -3,  1.5, -1, 3.4};


	for(i = 0; i < 20;i++)
		for (j = 19; j > i; j--) {
			if (x[j - 1] > x[j]) {
				k = x[j - 1];
				x[j - 1] = x[j];
				x[j] = k;
}
		}

	for (a = 19; a >= 0; a--)
		for (b = 0; b < a; b++) {
			if (y[b + 1] > y[b]) {
				c = y[b + 1];
				y[b + 1] = y[b];
				y[b] = c;
			}
		}



	for (i = 0; i < 20; i++) 

			printf("[%f,%f]\n", x[i], y[i]);
		
	

	return 0;
}
このプログラムはx座標とy座標それぞれを昇順、降順にソートしたいのですができません
アドバイスお願いします。

x座標優先でソートしたいです。またC言語をつかってください

例 (2,3)               (2,5)
(7,8) → (2,3)
(2,5) (7,8)

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: 教えてください

#2

投稿記事 by Dixq (管理人) » 8年前

やりたいことが良く分からないのですが、
座標を2つのディメンションでソートしたいのであれば座標情報を交換するときにxもyも交換しないとダメですよね。
今のままではバラバラになってしまいます。
つまり

コード:

#include<stdio.h>

int main(void)
{
	int i, j, a, b;
	double k, c;
	double x[20] = { -1, -0.39, 0, -4.1, -6, -3, -4.5, 0,
		-0.99, -3,  -4.1,  -3  ,-99, -2.4,  -2.6, -1.6, -2.6,  -1.0, -1, -5.4 };
	double y[20] = { -2,0, 0,1.1, 6, -3, -3.1, 0.1, 0.5, -2, -1.9,
		1.5, 1.5, -2, -3.1,  -3, -3,  1.5, -1, 3.4 };
	for (i = 0; i < 20; i++) {
		for (j = 19; j > i; j--) {
			if (x[j - 1] > x[j]) {
				k = x[j - 1];
				x[j - 1] = x[j];
				x[j] = k;

				k = y[j - 1];
				y[j - 1] = y[j];
				y[j] = k;
			}
		}
	}
	for (a = 19; a >= 0; a--) {
		for (b = 0; b < a; b++) {
			if (y[b + 1] > y[b]) {
				c = y[b + 1];
				y[b + 1] = y[b];
				y[b] = c;

				c = x[b + 1];
				x[b + 1] = x[b];
				x[b] = c;
			}
		}
	}
	for (i = 0; i < 20; i++) {
		printf("[%f,%f]\n", x[i], y[i]);
	}
	return 0;
}
しかし座標情報は構造体などでセットで所持した方が良いと思います。

返信

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