POJ3299-Humidex

http://poj.org/problem?id=3299

公式转换下,细节地方注意下getchar( )就没什么了- -#

#include<stdio.h>
#include<math.h>
#define max 9999
double totem(double dew,double hum)
{
    double e=6.11*exp(5417.7530*((1/273.16)-(1/(dew+273.16))));
    double h=(0.5555)*(e-10.0);
    return hum-h;
}
double tohum(double t,double d)
{ 
    double e=6.11*exp(5417.7530*((1/273.16)-(1/(d+273.16))));
    double h=(0.5555)*(e-10.0);
    return t+h;
}

double todew(double tem,double hum)
{
    double h=hum-tem;
    double e=h/0.5555+10.0;
    return 1/(1/273.16-log(e/6.11)/5417.7530)-273.16;
}

int main(void)
{
    double tem,hum,dew,x,y;
    char a,b;
    while(scanf("%c",&a),a!='E')
    {
        getchar();
        scanf("%lf %c %lf",&x,&b,&y);
        getchar();
        tem=hum=dew=max;
        switch(a)
        {
            case 'T': tem=x;break;
            case 'D': dew=x;break;
            case 'H': hum=x;break;
        }
        switch(b)
        {
            case 'T': tem=y;break;
            case 'D': dew=y;break;
            case 'H': hum=y;break;
        }
        if(tem==max)
           tem=totem(dew,hum);
        else if(dew==max)
           dew=todew(tem,hum);
        else if(hum==max)
           hum=tohum(tem,dew);
        printf("T %.1lf D %.1lf H %.1lf\n",tem,dew,hum);
     }
     return 0;
}
posted @ 2012-08-28 20:54  Yogurt Shen  阅读(239)  评论(0编辑  收藏  举报