#include <stdio.h>
#include <stdlib.h>
// typedefと無名構造体を用いたBodyの定義
typedef struct {
int id;
double height;
} Body;
// 身長の昇順でソートするための比較関数
int compareHeight(const void *a, const void *b) {
Body *bodyA = (Body *)a;
Body *bodyB = (Body *)b;
if (bodyA->height < bodyB->height) return -1;
else if (bodyA->height > bodyB->height) return 1;
else return 0;
}
int main() {
// Body構造体の配列を宣言・初期化
Body data[] = {
{101, 172.5},
{102, 165.3},
{103, 180.2},
{104, 158.9},
{105, 170.0}
};
int n = sizeof(data) / sizeof(data[0]);
// 身長の昇順にソート
qsort(data
, n
, sizeof(Body
), compareHeight
);
// 結果を表示
for (int i = 0; i < n; i++) {
printf("%d\t%.1f\n", data
[i
].
id, data
[i
].
height); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIHR5cGVkZWbjgajnhKHlkI3mp4vpgKDkvZPjgpLnlKjjgYTjgZ9Cb2R544Gu5a6a576pCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBpZDsKICAgIGRvdWJsZSBoZWlnaHQ7Cn0gQm9keTsKCi8vIOi6q+mVt+OBruaYh+mghuOBp+OCveODvOODiOOBmeOCi+OBn+OCgeOBruavlOi8g+mWouaVsAppbnQgY29tcGFyZUhlaWdodChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKSB7CiAgICBCb2R5ICpib2R5QSA9IChCb2R5ICopYTsKICAgIEJvZHkgKmJvZHlCID0gKEJvZHkgKiliOwogICAgaWYgKGJvZHlBLT5oZWlnaHQgPCBib2R5Qi0+aGVpZ2h0KSByZXR1cm4gLTE7CiAgICBlbHNlIGlmIChib2R5QS0+aGVpZ2h0ID4gYm9keUItPmhlaWdodCkgcmV0dXJuIDE7CiAgICBlbHNlIHJldHVybiAwOwp9CgppbnQgbWFpbigpIHsKICAgIC8vIEJvZHnmp4vpgKDkvZPjga7phY3liJfjgpLlrqPoqIDjg7vliJ3mnJ/ljJYKICAgIEJvZHkgZGF0YVtdID0gewogICAgICAgIHsxMDEsIDE3Mi41fSwKICAgICAgICB7MTAyLCAxNjUuM30sCiAgICAgICAgezEwMywgMTgwLjJ9LAogICAgICAgIHsxMDQsIDE1OC45fSwKICAgICAgICB7MTA1LCAxNzAuMH0KICAgIH07CgogICAgaW50IG4gPSBzaXplb2YoZGF0YSkgLyBzaXplb2YoZGF0YVswXSk7CgogICAgLy8g6Lqr6ZW344Gu5piH6aCG44Gr44K944O844OICiAgICBxc29ydChkYXRhLCBuLCBzaXplb2YoQm9keSksIGNvbXBhcmVIZWlnaHQpOwoKICAgIC8vIOe1kOaenOOCkuihqOekugogICAgcHJpbnRmKCJJRFx0SGVpZ2h0XG4iKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCIlZFx0JS4xZlxuIiwgZGF0YVtpXS5pZCwgZGF0YVtpXS5oZWlnaHQpOwogICAgfQoKICAgIHJldHVybiAwOwp9