/* * プログラミング演習 第 13 回 * [例題 1] * (C) 2006 Hirohisa AMAN */ #include struct birthday { int year; int month; int day; }; int main(void){ struct birthday a[5], tmp; int i, n, m, code_m, code_i; /* a[i] を読み込む */ for ( i = 0; i < 5; i++ ){ printf("%d > ", i); scanf("%d %d %d", &a[i].year, &a[i].month, &a[i].day); } for ( n = 4; n >= 0; n-- ){ m = 0; /* a[0] が最も若いと仮定 */ for ( i = 1; i <= n; i++ ){ code_m = a[m].year * 10000 + a[m].month * 100 + a[m].day; code_i = a[i].year * 10000 + a[i].month * 100 + a[i].day; if ( code_m < code_i ){ m = i; /* 最大値の位置の更新 */ } } if ( m < n ){ /* a[m] と a[n] の値を交換 */ tmp = a[m]; a[m] = a[n]; a[n] = tmp; } } for ( i = 0; i < 5; i++ ){ printf("%d %d %d\n", a[i].year, a[i].month, a[i].day); } return 0; }