PKU 3299 Humidex

http://poj.org/problem?id=3299
2つの値が与えられるので、残りの一つの値を出す。

式変形して書く。
入力の形式について誤解していて1WA。
これもdiscussを見てしまった。

main(){
  char c;
  while(true){
    char c;
    int s=7;
    double humidex,temperature,dewpoint;
    rep(i,2){
      cin>>c;
      switch(c){
      case 'E':return 0;break;
      case 'T':s-=1,cin>>temperature;break;
      case 'D':s-=2,cin>>dewpoint;break;
      case 'H':s-=4,cin>>humidex;break;
      }
    }

    double e=6.11*exp(5417.7530*(1/273.16-1/(dewpoint+273.16)));    
    double h=0.5555*(e-10);

    double t;
    switch(s){
    case 1:
      temperature=humidex-h;
      break;
    case 2:
      h=humidex-temperature;
      e=h/0.5555+10;
      t=log(e/6.11)/5417.7530;
      dewpoint=273.16/(1-273.16*t)-273.16;
      break;
    case 4:
      humidex=temperature+h;
      break;
    }
    printf("T %.1f D %.1f H %.1f\n",temperature,dewpoint,humidex);
  }
}