[ create a new paste ] login | about

Link: http://codepad.org/9SJ5m2xK    [ raw code | fork ]

C, pasted on Aug 3:
#include <stdio.h>
#include <string.h>

// 降順ソート
void sort(int a[], size_t n)
{
	int t;
	size_t i, j, k;
	for (i = 0; i < n - 1; ++i) {
		for (k = i, j = i + 1; j < n; ++j) {
			if (a[k] < a[j]) {
				k = j;
			}
		}
		t = a[k];
		a[k] = a[i];
		a[i] = t;
	}
}

// 並び替えたものを表示
// ・aはソート済み配列
void print1(const int a[], size_t n)
{
	size_t i;
	for (i = 0; i < n; ++i) {
		printf("rank%d : %d\n", i + 1, a[i]);
	}
}

// 順番をつけて表示
// ・aはソート済み配列
// ・bはもとの順番の配列
void print2(const int a[], const int b[], size_t n)
{
	size_t i, j;
	for (i = 0; i < n; ++i) {
		for (j = 0; j < n; ++j) {
			if (b[i] == a[j]) {
				break;
			}
		}
		printf("a%d=%d : rank%d\n", i, b[i], j + 1);
	}
}

// データ入力
// ・成功したら0を返す
int input(int a[], size_t n)
{
	size_t i;
	for (i = 0; i < n; ++i) {
		printf("a%d=", i);
		if (scanf("%d", &a[i]) != 1) {
			return -1;
		}
	}
	return 0;
}


int main(void)
{
	int a[5], b[5];
	const size_t n = sizeof(a) / sizeof(*a);
	
	if (input(a, n) != 0) {
		fprintf(stderr, "input error.\n");
		return 0;
	}
	memcpy(b, a, sizeof(a));	// 元の配列をコピー

	sort(a, n);
	print1(a, n);		
	print2(a, b, n);

	return 0;
}


Create a new paste based on this one


Comments: