#include <stdio.h>
#include <stdlib.h>
typedef struct person {
int age;
double height;
double weight;
} person;
int cmpDesHeight(const void* n1, const void* n2) {
if (((person*)n1)->height > ((person*)n2)->height) {
return -1;
} else if (((person*)n1)->height < ((person*)n2)->height) {
return 1;
} else {
return 0;
}
}
int cmpAscWeight(const void* n1, const void* n2) {
if (((person*)n1)->weight > ((person*)n2)->weight) {
return 1;
} else if (((person*)n1)->weight < ((person*)n2)->weight) {
return -1;
} else {
return 0;
}
}
char* msg[] = {"年齢", "身長", "体重"};
int main(void) {
person nums[5];
char a[5];
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
printf("%d人目の%sを入力してください。\n", i
+ 1, msg
[j
]); switch (j) {
case 0: nums
[i
].
age = strtol(a
, NULL
, 10); break; case 1: nums
[i
].
height = strtod(a
, NULL
); break; default: nums
[i
].
weight = strtod(a
, NULL
); break; }
}
}
qsort(nums
, sizeof(nums
)/sizeof(nums
[0]), sizeof(person
), cmpDesHeight
); printf("最も身長が高い人は年齢:%d才, 身長:%lfcm, 体重%lfkgです。\n", nums
[0].
age, nums
[0].
height, nums
[0].
weight); qsort(nums
, sizeof(nums
)/sizeof(nums
[0]), sizeof(person
), cmpAscWeight
); printf("最も体重が軽い人は年齢:%d才, 身長:%lfcm, 体重%lfkgです。\n", nums
[0].
age, nums
[0].
height, nums
[0].
weight); return EXIT_SUCCESS;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IHBlcnNvbiB7CiAgaW50IGFnZTsKICBkb3VibGUgaGVpZ2h0OwogIGRvdWJsZSB3ZWlnaHQ7Cn0gcGVyc29uOwoKaW50IGNtcERlc0hlaWdodChjb25zdCB2b2lkKiBuMSwgY29uc3Qgdm9pZCogbjIpIHsKICBpZiAoKChwZXJzb24qKW4xKS0+aGVpZ2h0ID4gKChwZXJzb24qKW4yKS0+aGVpZ2h0KSB7CiAgICByZXR1cm4gLTE7CiAgfSBlbHNlIGlmICgoKHBlcnNvbiopbjEpLT5oZWlnaHQgPCAoKHBlcnNvbiopbjIpLT5oZWlnaHQpIHsKICAgICAgcmV0dXJuIDE7CiAgICB9IGVsc2UgewogICAgcmV0dXJuIDA7CiAgfQp9CgppbnQgY21wQXNjV2VpZ2h0KGNvbnN0IHZvaWQqIG4xLCBjb25zdCB2b2lkKiBuMikgewogIGlmICgoKHBlcnNvbiopbjEpLT53ZWlnaHQgPiAoKHBlcnNvbiopbjIpLT53ZWlnaHQpIHsKICAgIHJldHVybiAxOwogIH0gZWxzZSBpZiAoKChwZXJzb24qKW4xKS0+d2VpZ2h0IDwgKChwZXJzb24qKW4yKS0+d2VpZ2h0KSB7CiAgICByZXR1cm4gLTE7CiAgfSBlbHNlIHsKICAgIHJldHVybiAwOwogIH0KfQoKY2hhciogbXNnW10gPSB7IuW5tOm9oiIsICLouqvplbciLCAi5L2T6YeNIn07CgppbnQgbWFpbih2b2lkKSB7CiAgcGVyc29uIG51bXNbNV07CiAgY2hhciBhWzVdOwogIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAgICBmb3IgKGludCBqID0gMDsgaiA8IDM7IGorKykgewogICAgICBwcmludGYoIiVk5Lq655uu44GuJXPjgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTjgIJcbiIsIGkgKyAxLCBtc2dbal0pOwogICAgICBzY2FuZigiJTRzJSpbXlxuXSIsIGEpOwogICAgICBnZXRjaGFyKCk7CiAgICAgIHN3aXRjaCAoaikgewogICAgICBjYXNlIDA6IG51bXNbaV0uYWdlID0gc3RydG9sKGEsIE5VTEwsIDEwKTsgYnJlYWs7CiAgICAgIGNhc2UgMTogbnVtc1tpXS5oZWlnaHQgPSBzdHJ0b2QoYSwgTlVMTCk7IGJyZWFrOwogICAgICBkZWZhdWx0OiBudW1zW2ldLndlaWdodCA9IHN0cnRvZChhLCBOVUxMKTsgYnJlYWs7CiAgICAgIH0KICAgIH0KICB9CiAgcXNvcnQobnVtcywgc2l6ZW9mKG51bXMpL3NpemVvZihudW1zWzBdKSwgc2l6ZW9mKHBlcnNvbiksIGNtcERlc0hlaWdodCk7CiAgcHJpbnRmKCLmnIDjgoLouqvplbfjgYzpq5jjgYTkurrjga/lubTpvaI6JWTmiY0sIOi6q+mVtzolbGZjbSwg5L2T6YeNJWxma2fjgafjgZnjgIJcbiIsIG51bXNbMF0uYWdlLCBudW1zWzBdLmhlaWdodCwgbnVtc1swXS53ZWlnaHQpOwogIHFzb3J0KG51bXMsIHNpemVvZihudW1zKS9zaXplb2YobnVtc1swXSksIHNpemVvZihwZXJzb24pLCBjbXBBc2NXZWlnaHQpOwogIHByaW50Zigi5pyA44KC5L2T6YeN44GM6Lu944GE5Lq644Gv5bm06b2iOiVk5omNLCDouqvplbc6JWxmY20sIOS9k+mHjSVsZmtn44Gn44GZ44CCXG4iLCBudW1zWzBdLmFnZSwgbnVtc1swXS5oZWlnaHQsIG51bXNbMF0ud2VpZ2h0KTsKICByZXR1cm4gRVhJVF9TVUNDRVNTOwp9Cg==