poj3299解题报告

摘要:给定3个参数 H,D,T 中的两个,根据公式

humidex = temperature + h
h = (0.5555)× (e - 10.0)
e = 6.11 × exp [5417.7530 × ((1/273.16) - (1/(dewpoint+273.16)))]
求解另外一个参数.
输入以单个的E作为一行结束.
Sample Input

T 30 D 15
T 30.0 D 25.0
E
Sample Output

T 30.0 D 15.0 H 34.0
T 30.0 D 25.0 H 42.3

基本思路:本题是acm题库里面的水题,相对简单,注意是注意输入的格式.

注意到每次的输入都是一个输入流,cin遇到空格或者回车结束,那么我们可以根据输入的字符判断应该将接下来的数字输入到哪个参数里面.同时需要注意的是用index作为一个标记输入情况的变量,index = 4*T(如果T存在)+2*D(如果D存在)+H(如果H存在).

#include "stdafx.h"
#include "iostream"
 #include<iomanip>
#include "stdio.h"
#include "cmath"
using namespace std;
void Find(int index,double T,double D,double H)
{
    double s,E,s1,s2,s3;
    switch(index)//选择相应的计算情况
    {
        case 3:   // D H
              s = 6.11*(exp(5417.7530*((1/273.16)-(1/(D+273.16)))));
             E = s - 10.0;
             T = H - 0.5555*E;
        break;
        case 5:   // T H
             s = (H-T)/0.5555 +10;
             s1 = s/6.11;
             s2 = log(s1);
             s3 = (1/273.16)-s2/5417.7530;
             D = (1/s3 - 273.16);
            break;
             case 6:   //T D 
            double s = 6.11*(exp(5417.7530*((1/273.16)-(1/(D+273.16)))));
            double E = s - 10.0;
            H = (T+0.5555*E);
        break;
    }
    cout<<std::fixed<<setprecision(1)<<"T "<<T<<" D "<<D<<" H "<<H<<endl;
}

你可能感兴趣的:(poj3299解题报告)