首页 新闻 会员 周边

POJ 3299问题

0
悬赏园豆:5 [已解决问题] 解决于 2012-11-12 20:29
问一个POJ3299的问题,这是我看到的别人的答案:http://blog.csdn.net/lyy289065406/article/details/6642582

#include<iostream> #include<math.h> #include<string> #include<iomanip> using namespace std; int main(void) { char alpha; double t,d,h; int i; for(;;) { t=d=h=200; //三个参数的范围默认都是在-100 ~ 100 for(i=0;i<2;i++) { cin>>alpha; if(alpha=='E') return 0; else if(alpha=='T') cin>>t; else if(alpha=='D') cin>>d; else if(alpha=='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<<setprecision(1)<<fixed<<"T "<<t<<" D "<<d<<" H "<<h<<endl; } return 0; }

关于后面的if(h==200) else if(t==200)  else if (d==200)这几个语句的处理不是很明白,能否给讲解一下?

c++
响^_^的主页 响^_^ | 初学一级 | 园豆:110
提问于:2012-10-18 15:16
< >
分享
最佳答案
0

多看几遍就明白了,其实是很清楚的。

比如,你输入T 30  D 15以后,那么此时H一定是200(之前有);而实际上,T D H 三者必须满足那几个公式,也就是说H是不能为200的,那么接下来就需要计算H了。此程序作者的思路很好啊,反正我是没想到。 

收获园豆:5
逗你玩儿 | 菜鸟二级 |园豆:207 | 2012-11-11 00:32

明白了。。。果然是这个人的逻辑思维很强,谢谢啦!

响^_^ | 园豆:110 (初学一级) | 2012-11-12 20:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册