POJ_3299

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

求的不全是H,也有可能是T或D。

/*
    POJ_3299
    
    humidex = temperature + h
    h = (0.5555)× (e - 10.0)
    e = 6.11 × exp [5417.7530 × ((1/273.16) - (1/(dewpoint+273.16)))]
*/
#include<stdio.h>
#include<math.h>
#include<string.h>
#define EXP 2.718281828
double Hh(double da,double db){
    double e,h;
    e = 6.11*pow(EXP,(5417.7530 * ((1/273.16) - (1/(db+273.16)))));
    h = (0.5555)*(e-10.0);
//    printf("e %e\nh %e\n",&e,&h);
    return da+h;
}
double Dd(double da,double db){
    double e,h;
    h = db-da;
    e = h/0.5555+10.0;
    return 1/(1/273.16-log(e/6.11)/5417.7530)-273.16;
}
double Tt(double da,double db){
    double e,h;
    e = 6.11*pow(EXP,(5417.7530 * ((1/273.16) - (1/(da+273.16)))));
    h = (0.5555)*(e-10.0);
    return db-h;
}
int main(){
    char ca,cb;
    double da,db;
    while(true){
        scanf("%c",&ca);
        if(ca=='E'){
            break;
        }
        scanf("%lf %c %lf",&da,&cb,&db);
        if(ca=='T'&&cb=='D'){
            printf("T %.1lf D %.1lf H %.1lf\n",da,db,Hh(da,db));
        }
        else if(ca=='D'&&cb=='T'){
            printf("T %.1lf D %.1lf H %.1lf\n",db,da,Hh(db,da));
        }
        else if(ca=='T'&&cb=='H'){
            printf("T %.1lf D %.1lf H %.1lf\n",da,Dd(da,db),db);
        }
        else if(ca=='H'&&cb=='T'){
            printf("T %.1lf D %.1lf H %.1lf\n",db,Dd(db,da),da);
        }
        else if(ca=='D'&&cb=='H'){
            printf("T %.1lf D %.1lf H %.1lf\n",Tt(da,db),da,db);
        }
        else if(ca=='H'&&cb=='D'){
            printf("T %.1lf D %.1lf H %.1lf\n",Tt(db,da),da,db);
        }
    }
    return 0;
}

 

posted @ 2019-10-28 17:13  智人心  阅读(226)  评论(0)    收藏  举报