#include <stdio.h>
// 構造体Bodyの定義
struct Body {
int id;
int weight;
int height;
};
// 構造体を入れ替えるためのswap関数
void swap(struct Body *x, struct Body *y) {
struct Body temp = *x;
*x = *y;
*y = temp;
}
int main() {
// 構造体配列の初期化
struct Body a[] = {
{1, 65, 170},
{2, 60, 160},
{3, 70, 180},
{4, 55, 155},
{5, 80, 175}
};
int n = sizeof(a) / sizeof(a[0]); // 配列の要素数
// 身長の逆順(降順)にバブルソート
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (a[j].height < a[j + 1].height) { // 逆順なので「<」で比較
swap(&a[j], &a[j + 1]);
}
}
}
// 結果の表示
for (int i = 0; i < n; i++) {
printf("%d\t%d\t%d\n", a
[i
].
id, a
[i
].
weight, a
[i
].
height); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyDmp4vpgKDkvZNCb2R544Gu5a6a576pCnN0cnVjdCBCb2R5IHsKICAgIGludCBpZDsKICAgIGludCB3ZWlnaHQ7CiAgICBpbnQgaGVpZ2h0Owp9OwoKLy8g5qeL6YCg5L2T44KS5YWl44KM5pu/44GI44KL44Gf44KB44Guc3dhcOmWouaVsAp2b2lkIHN3YXAoc3RydWN0IEJvZHkgKngsIHN0cnVjdCBCb2R5ICp5KSB7CiAgICBzdHJ1Y3QgQm9keSB0ZW1wID0gKng7CiAgICAqeCA9ICp5OwogICAgKnkgPSB0ZW1wOwp9CgppbnQgbWFpbigpIHsKICAgIC8vIOani+mAoOS9k+mFjeWIl+OBruWIneacn+WMlgogICAgc3RydWN0IEJvZHkgYVtdID0gewogICAgICAgIHsxLCA2NSwgMTcwfSwKICAgICAgICB7MiwgNjAsIDE2MH0sCiAgICAgICAgezMsIDcwLCAxODB9LAogICAgICAgIHs0LCA1NSwgMTU1fSwKICAgICAgICB7NSwgODAsIDE3NX0KICAgIH07CiAgICBpbnQgbiA9IHNpemVvZihhKSAvIHNpemVvZihhWzBdKTsgLy8g6YWN5YiX44Gu6KaB57Sg5pWwCgogICAgLy8g6Lqr6ZW344Gu6YCG6aCG77yI6ZmN6aCG77yJ44Gr44OQ44OW44Or44K944O844OICiAgICBmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG4gLSAxIC0gaTsgaisrKSB7CiAgICAgICAgICAgIGlmIChhW2pdLmhlaWdodCA8IGFbaiArIDFdLmhlaWdodCkgeyAvLyDpgIbpoIbjgarjga7jgafjgIzvvJzjgI3jgafmr5TovIMKICAgICAgICAgICAgICAgIHN3YXAoJmFbal0sICZhW2ogKyAxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8g57WQ5p6c44Gu6KGo56S6CiAgICBwcmludGYoIklEXHTkvZPph41cdOi6q+mVt1xuIik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHByaW50ZigiJWRcdCVkXHQlZFxuIiwgYVtpXS5pZCwgYVtpXS53ZWlnaHQsIGFbaV0uaGVpZ2h0KTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==