编写一个程序,给定任意两个测量值,即可计算出第三个。
您可以假设对于所有输入,温度,露点和湿度都在-100°C至100°C之间。
输入值
输入将包含许多行。除最后一行外,每一行均由四项组成,各行之间用空格隔开:字母,数字,第二个字母和第二个数字。每个字母指定其后的数字的含义,将为T(代表温度),D(代表露点)或H(代表湿度)。输入的最后一行将由单个字母E组成。
输出量
对于除最后一行以外的每一行输入,产生一行输出。输出的每一行应具有以下形式:T号D号H号其中三个数字分别用温度,露点和湿度指数代替。每个值都应四舍五入到最接近的十分之一度,小数点后应精确到一位。所有温度均为摄氏度。
样本输入
T 30 D 15
T 30.0 D 25.0
E
样本输出
T 30.0 D 15.0 H 34.0
T 30.0 D 25.0 H 42.3
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
void TD(double T,double D)
{
double e,H;
e=6.11*exp(5417.7530 * ((1/273.16) - (1/(D+273.16))));
H=(0.5555)*(e - 10.0)+T;
cout <<setiosflags(ios::fixed)<<setprecision(1)<<"T "<<T<<" D "<<D<<" H "<<H<<endl;
}
void TH(double T,double H)
{
double e,D;
e=(H-T)/0.5555+10.0;
D=1/(1.0/273.16-log(e/6.11)/5417.7530)-273.16;
cout <<setiosflags(ios::fixed)<<setprecision(1)<<"T "<<T<<" D "<<D<<" H "<<H<<endl;
}
void DH(double D,double H)
{
double e,T,h;
e=6.11*exp(5417.7530 * ((1/273.16) - (1/(D+273.16))));
h=(0.5555)*(e - 10.0);
T=H-h;
cout <<setiosflags(ios::fixed)<<setprecision(1)<<"T "<<T<<" D "<<D<<" H "<<H<<endl;
}
int main()
{
char x1,x2;
double a1,a2;
while (cin>>x1&&x1!='E')
{
cin>>a1>>x2>>a2;
if(x1=='T')
{
if(x2=='D')
TD(a1,a2);
else
TH(a1,a2);
}
else if(x1=='D')
{
if(x2=='T')
TD(a2,a1);
else
DH(a1,a2);
}
else
{
if(x2=='T')
TH(a2,a1);
else
DH(a2,a1);
}
}
return 0;
}