#include <stdio.h>
#include <math.h>
// 無名構造体+typedefでBody型を定義
typedef struct {
int id;
double height;
double weight;
} Body;
int main(void) {
// 構造体配列dataの初期化
Body data[] = {
{1, 165, 60},
{2, 170, 68},
{3, 160, 50},
{4, 180, 75},
{5, 175, 80}
};
int n = sizeof(data) / sizeof(data[0]);
// 身長の昇順にソート(単純なバブルソート)
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (data[j].height > data[j + 1].height) {
Body temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
// ソート後の結果表示
for (int i = 0; i < n; i++) {
printf("ID:%d Height:%.0f Weight:%.0f\n", data
[i
].
id, data
[i
].
height, data
[i
].
weight); }
// 上位3名の身長の平均と標準偏差を計算
double ave = 0.0, std = 0.0;
for (int i = n - 3; i < n; i++) {
ave += data[i].height;
}
ave /= 3.0;
for (int i = n - 3; i < n; i++) {
std
+= pow(data
[i
].
height - ave
, 2); }
printf("\n上位3名の平均身長: %.1f cm\n", ave
); printf("上位3名の身長の標準偏差: %.1f cm\n", std
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgovLyDnhKHlkI3mp4vpgKDkvZPvvIt0eXBlZGVm44GnQm9keeWei+OCkuWumue+qQp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgaWQ7CiAgICBkb3VibGUgaGVpZ2h0OwogICAgZG91YmxlIHdlaWdodDsKfSBCb2R5OwoKaW50IG1haW4odm9pZCkgewogICAgLy8g5qeL6YCg5L2T6YWN5YiXZGF0YeOBruWIneacn+WMlgogICAgQm9keSBkYXRhW10gPSB7CiAgICAgICAgezEsIDE2NSwgNjB9LAogICAgICAgIHsyLCAxNzAsIDY4fSwKICAgICAgICB7MywgMTYwLCA1MH0sCiAgICAgICAgezQsIDE4MCwgNzV9LAogICAgICAgIHs1LCAxNzUsIDgwfQogICAgfTsKICAgIGludCBuID0gc2l6ZW9mKGRhdGEpIC8gc2l6ZW9mKGRhdGFbMF0pOwoKICAgIC8vIOi6q+mVt+OBruaYh+mghuOBq+OCveODvOODiO+8iOWNmOe0lOOBquODkOODluODq+OCveODvOODiO+8iQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuIC0gaSAtIDE7IGorKykgewogICAgICAgICAgICBpZiAoZGF0YVtqXS5oZWlnaHQgPiBkYXRhW2ogKyAxXS5oZWlnaHQpIHsKICAgICAgICAgICAgICAgIEJvZHkgdGVtcCA9IGRhdGFbal07CiAgICAgICAgICAgICAgICBkYXRhW2pdID0gZGF0YVtqICsgMV07CiAgICAgICAgICAgICAgICBkYXRhW2ogKyAxXSA9IHRlbXA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8g44K944O844OI5b6M44Gu57WQ5p6c6KGo56S6CiAgICBwcmludGYoIui6q+mVt+OBruS9juOBhOmghjpcbiIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBwcmludGYoIklEOiVkICBIZWlnaHQ6JS4wZiAgV2VpZ2h0OiUuMGZcbiIsIGRhdGFbaV0uaWQsIGRhdGFbaV0uaGVpZ2h0LCBkYXRhW2ldLndlaWdodCk7CiAgICB9CgogICAgLy8g5LiK5L2NM+WQjeOBrui6q+mVt+OBruW5s+Wdh+OBqOaomea6luWBj+W3ruOCkuioiOeulwogICAgZG91YmxlIGF2ZSA9IDAuMCwgc3RkID0gMC4wOwogICAgZm9yIChpbnQgaSA9IG4gLSAzOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgYXZlICs9IGRhdGFbaV0uaGVpZ2h0OwogICAgfQogICAgYXZlIC89IDMuMDsKCiAgICBmb3IgKGludCBpID0gbiAtIDM7IGkgPCBuOyBpKyspIHsKICAgICAgICBzdGQgKz0gcG93KGRhdGFbaV0uaGVpZ2h0IC0gYXZlLCAyKTsKICAgIH0KICAgIHN0ZCA9IHNxcnQoc3RkIC8gMy4wKTsKCiAgICBwcmludGYoIlxu5LiK5L2NM+WQjeOBruW5s+Wdh+i6q+mVtzogJS4xZiBjbVxuIiwgYXZlKTsKICAgIHByaW50Zigi5LiK5L2NM+WQjeOBrui6q+mVt+OBruaomea6luWBj+W3rjogJS4xZiBjbVxuIiwgc3RkKTsKCiAgICByZXR1cm4gMDsKfQo=