//1_4_2: Humidex 湿热指数,温度和露点之间的关系 POJ3299
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
double get_hum(double tem,double dew)
{
return tem + 0.5555 * (6.11 * exp(5417.7530 * ((1 / 273.16) - (1 / (dew + 273.16)))) - 10.0);
}
double get_tem(double hum,double dew)
{
return hum - 0.5555 * (6.11 * exp(5417.7530 * ((1 / 273.16) - (1 / (dew + 273.16)))) - 10.0);
}
double get_dew(double hum,double tem)
{
return 1 / ((1 / 273.16) - log(((hum - tem) / 0.5555 + 10) / 6.11) / 5417.7530) - 273.16;
}
int main()
{
char A,B,enter;
double Hum,Tem,Dew,a,b;
while(1)
{
scanf("%c",&A);
if(A == 'E') break;
Hum = Tem = Dew = -9999;
scanf("%lf %c %lf%c",&a,&B,&b,&enter);
if(A == 'T') Tem = a;
if(A == 'D') Dew = a;
if(A == 'H') Hum = a;
if(B == 'T') Tem = b;
if(B == 'D') Dew = b;
if(B == 'H') Hum = b;
if(Hum == -9999) Hum = get_hum(Tem,Dew);
else if(Tem == -9999) Tem = get_tem(Hum,Dew);
else if(Dew == -9999) Dew = get_dew(Hum,Tem);
printf("T %.1f D %.1f H %.1f\n",Tem,Dew,Hum);
}
return 0;
}
/*测试结果:通过POJ3299检测
T 15.2 D 23.8
T 15.2 D 23.8 H 26.3
D 23.8 H 26.3
T 15.2 D 23.8 H 26.3
H 26.3 T 15.2
T 15.2 D 23.8 H 26.3
E
请按任意键继续. . .
*/POJ3299 Humidex
最新推荐文章于 2026-06-02 16:22:49 发布
该博客主要介绍了如何计算湿热指数(Humidex),通过C++代码展示了从温度(Tem)和露点(Dew)求Humidex,以及反之的过程。博客提供了完整的程序实现,并通过了POJ3299的测试用例,实现了Humidex、温度和露点之间的相互转换。

590

被折叠的 条评论
为什么被折叠?



