POJ3299Humidex

题目思路:
1.题目中涉及到三个变量,要求给出其中两个,计算出第三个,然后将三个内容都输出。其中涉及到的主要问题为:

判断需要计算哪个参数

根据上述判断执行计算过程

2.首先解决第一个问题,因为三个参数默认值都是在-100~100之间,所以可以设初始值三个数都是200,这样在输入结束后必然就有一个数还是200,这样就能判断是计算哪个参数。

3.其次解决计算问题。计算过程的公式都已经给出了,剩下的就是对这个公式进行变换,然后用代码表示出来就好了。这里使用到了标准库中的乘方函数以及对数函数(log),直接代公式就可以了。

humidex = temperature + h
h = (0.5555)× (e - 10.0)
e = 6.11 × exp [5417.7530 × ((1/273.16) - (1/(dewpoint+273.16)))]

最后需要注意的点就是输出控制。

在这里题目要求是四舍五入并保留一位小数。使用setprecision和fixed

代码如下:

#include<iostream>
#include<math.h>
#include<string>
#include<iomanip>
using namespace std;
int main(void)
{
	char c;
	double t,d,h;
	int i;
	while(1)
	{
		t = d = h = 200;    //三个参数的范围默认都是在-100 ~ 100
		for(i=0; i<2; i++)
		{
			cin >> c;
			if(c == 'E')
				return 0;
			else if(c == 'T')
			    cin >> t;
			else if(c == 'D')
				cin >> d;
			else if(c == 'H')
				cin >> h;
		}
		if(h == 200)
			h = t + 0.5555 * (6.11*exp(5417.7530*(1/273.16-1/(d+273.16)))-10);
		else if(t == 200)
			t = h - 0.5555 * (6.11*exp(5417.7530*(1/273.16-1/(d+273.16)))-10);
		else if(d == 200)
			d = 1 / ((1/273.16)-((log((((h-t)/0.5555)+10.0)/6.11))/5417.7530))-273.16;
		cout << fixed << setprecision(1) <<"T "<<t<<" D "<<d<<" H "<<h<< endl;
	}
	return 0;
}

 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值