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