题意:
很长,但是重点就是几个公式。
思路:
题目给出了公式,知道两个未知量求第三个。
C要注意输入时适当的getchar()。
另外在输出的时候用G++的编译器总是过不了double类型变量lf占位符输出。解决方法是要么改成f占位,要么改成C++编译器输出。
代码实现:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
using namespace std;
char flag;
double num;
bool fT,fD,fH;
double T,D,H;
double E,humidex;
int main()
{
while( scanf("%c",&flag) ){
if( flag == 'E' ){
break;
}
fT = fD = fH = false;
scanf("%lf",&num);
if( flag == 'T' ){
T = num;
fT = true;
}
else if( flag == 'D' ){
D = num;
fD = true;
}
else if( flag == 'H' ){
humidex = num;
fH = true;
}
getchar();
scanf("%c",&flag);
getchar();
scanf("%lf",&num);
if( flag == 'T' ){
T = num;
fT = true;
}
else if( flag == 'D' ){
D = num;
fD = true;
}
else if( flag == 'H' ){
humidex = num;
fH = true;
}
if( fT && fD ){
E = 6.11*exp((5417.7530)*((1/273.16)-(1/(D+273.16))));
H = (0.5555)*(E-10.0);
humidex = T+H;
}
else if( fT && fH ){
H = humidex-T;
E = H/(0.5555)+10.0;
D = 1/(-(log(E/6.11)/5417.7530)+(1/273.16))-273.16;
}
else if( fD && fH ){
E = 6.11*exp((5417.7530)*((1/273.16)-(1/(D+273.16))));
H = (0.5555)*(E-10.0);
T = humidex-H;
}
printf("T %.1lf D %.1lf H %.1lf\n",T,D,humidex);
getchar();
}
return 0;
}