身長 [cm] と体重 [kg] を標準入力して BMI を計算するプログラムを作りたいのですが
BMI の値によって「やせ型」「標準型」「肥満型」の判
断と表示を行う(この部分もユーザー関数で行う)
• やせ型: BMI が 18.5 未満
• 標準型: BMI が 18.5 以上、25 未満
• 肥満型: BMI が 25 以上
とし、
実行例
% a.out 身長 [cm] ? -172 身長 [cm] ? 172 体重 [kg] ? 63 身長 = 172 [cm] 体重 = 63 [kg] BMI = 21.3(標準型)
としたいのですが、私のコードですと、
身長 [cm] ? -172
身長 [cm] ? 172
体重 [kg] ? 63
身長 = 172 [cm]
体重 = 63 [kg]
BMI = 0.0 (標準型)
となり、
(1)BMIの値が違う
(2)また、BMIが0.0なのに”標準型”となっている
という問題が発生します。。
※BMIの求め方は
BMI = 体重 [kg] / (身長 [m] ) 2
どのように書けばいいのでしょうか。
私のコードです。
どのように書けばいいのでしょうか。
私のコードです。
C
1#include <stdio.h> 2 3double bmi_keisan(int height, int weight) /*このユーザー関数でBMIの計算を行う*/ 4{ 5 6 double body_mass_index; 7 8 body_mass_index=(weight)/(height)*(height); /*BMIの求め方*/ 9 10 return (body_mass_index); /*BMIの値を返す*/ 11} 12 13int main(void) 14{ 15 int height; 16 int weight; 17 double bmi; 18 char* result; 19 do{ 20 printf("身長 [cm] ? "); 21 scanf("%d",&height); 22 }while(height<0); /*身長は0よりもおおきい*/ 23 24 do{ 25 printf("体重 [kg] ? "); 26 scanf("%d",&weight); 27 }while(weight<0); /*体重は0よりもおおきい*/ 28 29 printf("身長 = %d [cm]\n",height); 30 printf("体重 = %d [kg]\n",weight); 31 32 bmi = bmi_keisan(height,weight); /*ユーザー関数の呼び出し*/ 33 if(bmi>=18.5 || bmi<25){ /*結果の判定*/ 34 result = "標準型"; 35 }else if(bmi>=25){ 36 result = "肥満型"; 37 }else{ 38 result = "やせ型"; 39 } 40 41 printf("BMI = %.1lf (%s) \n",bmi,result); /*結果の表示*/ 42 43 return 0; 44}
回答5件
あなたの回答
tips
プレビュー