ここから本文です

5人の学生の身長[m]、体重[kg]のデータをキーボードから入力して各学生のBMI値を...

アバター

ID非公開さん

2019/7/1522:35:23

5人の学生の身長[m]、体重[kg]のデータをキーボードから入力して各学生のBMI値を計算し、BMI値の小さい順に表示するプログラムを繰り返し文を使って作成する方法を教えてください。

[BMI=体重[kg]/(身長[m])^2]です。
c言語で作りたいです。よろしくお願いします。

補足追加の情報です。
各学生の身長・体重・BMIについては、それぞれ1次元配列を使用したいです。よろしくお願いします。

閲覧数:
65
回答数:
1

違反報告

ベストアンサーに選ばれた回答

nuo********さん

2019/7/1612:42:31

#include <stdio.h>
#include <stdlib.h>

#define NumOfPeople 5

int asc(const void *a, const void *b) {
float *A = (float *)a;
float *B = (float *)b;
if (*A > *B) return 1;
if (*A < *B) return -1;
return 0;
}

int main()
{
int Ct;
float Height[NumOfPeople];
float Weight[NumOfPeople];
float Bmi[NumOfPeople];

/*
Height[0] = 1.63;
Weight[0] = 77.5;
Height[1] = 1.84;
Weight[1] = 72.6;
Height[2] = 1.56;
Weight[2] = 42.1;
Height[3] = 1.68;
Weight[3] = 62.5;
Height[4] = 1.77;
Weight[4] = 65.5;
*/

for(Ct = 0; Ct < NumOfPeople; Ct ++) {
// 身長の入力を求める
printf("%d人目の身長 → ", Ct + 1);
scanf("%f", &Height[Ct]);

// 体重の入力を求める
printf("%d人目の体重 → ", Ct + 1);
scanf("%f", &Weight[Ct]);

// BMIを計算する
Bmi[Ct] = Weight[Ct] / (Height[Ct] * Height[Ct]);
}

/*
for(Ct = 0; Ct < NumOfPeople; Ct ++) {
printf("%d: %.2fm, %.1fkg, %.2f\n",
Ct + 1, Height[Ct], Weight[Ct], Bmi[Ct]);
}
*/

// BMIをキーとして昇順に並べ替える
qsort(Bmi, sizeof(Bmi) / sizeof(float), sizeof(float), asc);

// 結果を表示する
printf("\n");
for(Ct = 0; Ct < NumOfPeople; Ct ++) {
printf("%d: %.2f\n", Ct + 1, Bmi[Ct]);
}

return 0;
}

  • アバター

    質問者

    ID非公開さん

    2019/7/2218:26:04

    助かりました。ありがとうございます。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

アバター

質問した人からのコメント

2019/7/22 18:26:30

とてもわかりやすかったです。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる