循环结构分很多种,例如:while,do while,for......
而循环结构对于初学者较为困难,但这也是所有C++编程学者必须学会的知识。
今天,给大家一道例题,顺便为大家介绍一下。
而我们的例题叫:鸡尾酒疗法
解题思路:
- 先读入鸡尾酒疗法的总病例数和有效病例数,计算其有效率x
- 然后用循环读入其他改进疗法的数据,对于每种疗法:
- 计算有效率y
- 比较y和x的大小关系,输出better, worse或same
让我们来分解一下题目。
第一步:读入数据
int n,t,e;
cin>>n;
cin>>t>>e;
double x=(double)e/t,y;
首先,我们要知道要比较几组疗法(n),然后读入鸡尾酒疗法的总病例数(t)和有效病例数(e),计算出其有效率x。要把整数e转换成浮点数,否则相除会截断小数部分。
第二步:循环处理其他疗法
for(int i=1;i<n;++i){
cin>>t>>e;
y=(double)e/t;
接下来,我们用一个循环来读入其他n-1种改进疗法的数据。在循环内部,我们要读入总病例数t和有效病例数e,计算有效率y,然后与鸡尾酒疗法的有效率x进行比较。
第三步:疗法比较大展神威
if(y-x>0.05) cout<<"better"<<endl;
else if(x-y>0.05)cout<<"worse"<<endl;
else cout<<"same"<<endl;
我们要判断改进疗法效果是更好(better)、更差(worse)还是差不多(same)。
- 如果y-x大于5%,说明改进疗法更有效,输出better
- 如果x-y大于5%,说明改进疗法不如鸡尾酒疗法,输出worse
- 否则,两者效果相当,输出same
大家一定要记得浮点数比较时直接写0.05而不是5%,因为5%会被当成取余符。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,t,e;
cin>>n;
cin>>t>>e;
double x=(double)e/t,y;
for(int i=1;i<n;++i){
cin>>t>>e;
y=(double)e/t;
if(y-x>0.05) cout<<"better"<<endl;
else if(x-y>0.05)cout<<"worse"<<endl;
else cout<<"same"<<endl;
}
return 0;
}
感谢大家观看,谢谢。