/* Part 演習問題4 */ /* BMI(ローレル指数)の計算(関数版) */ #include <stdio.h> struct person { int id ; /* 個人ID */ double h ; /* 身長(m) */ double w ; /* 体重(Kg) */ } ; int bmi(struct person *) ; int main(void) { struct person x ; int value ; printf("個人ID 身長(m) 体重(Kg)を入力してください(EOFで終了)。\n") ; while(1) { if(scanf("%d %lf %lf",&x.id,&x.h,&x.w)==EOF) break ; if((x.id<1)||(x.h<0.3)||(x.h>2.5)||(x.w<1)||(x.w>300)) { printf("入力データに誤りがあります。入力し直してください。\n") ; } else { value=bmi(&x) ; printf("BMI=%d -> ",value) ; if(value<100) printf("やせすぎ\n") ; else if(value<114) printf("やせている\n") ; else if(value<144) printf("普通\n") ; else if(value<159) printf("太っている\n") ; else printf("太りすぎ\n") ; } } return(0) ; } /* BMI(ローレル指数)の計算 */ int bmi(struct person *x) { int v ; v=(x->w*10)/(x->h*x->h*x->h) ; return(v) ; } |
個人ID 身長(m) 体重(Kg)を入力してください(EOFで終了)。 1 1.67 61 BMI=130 -> 普通 2 1.75 78 BMI=145 -> 太っている 3 1.7 95 BMI=193 -> 太りすぎ 4 1.6 50.3 BMI=122 -> 普通 5 1.65 -34 入力データに誤りがあります。入力し直してください。 5 0.1 3.4 入力データに誤りがあります。入力し直してください。 5 1.65 47.3 BMI=105 -> やせている 6 1.71 42.2 BMI=84 -> やせすぎ |