/* Part 演習問題3 */
/* BMI(ローレル指数)の計算 */
#include <stdio.h>

int main(void)
{
  struct person {
    int id ;           /* 個人ID   */
    double h ;    /* 身長(m)  */
    double w ;    /* 体重(Kg) */
    int bmi ;         /* BMI(ローレル指数) */
  } ;

  struct person x ;


  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 {
      x.bmi=(10*x.w)/(x.h*x.h*x.h) ;
      printf("BMI=%d  -> ",x.bmi) ;
      if(x.bmi<100) printf("やせすぎ\n") ;
      else if(x.bmi<114) printf("やせている\n") ;
      else if(x.bmi<144) printf("普通\n") ;
      else if(x.bmi<159) printf("太っている\n") ;
      else printf("太りすぎ\n") ;
    }
  }
  return(0) ;
}


個人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  -> やせすぎ

  1. 「普通」,「太っている」,「太りすぎ」,「やせている」,「やせすぎ」の各ケースに対応する身長,体重を入力した.
  2. 人間の「身長」および「体重」としてふさわしくない値を入力した場合,例えば体重「-34Kg」あるいは身長「0.1m」を入力すると,エラーメッセージを表示し,計算は実行しない.