在给我之后,我被问到了 initial_population(7), 增长率(1.2%), initial_year(2011),以及将最终人口与初始人口连接起来的公式:
initial_population * exp ( (final_year - initial_year) * (rate/ 100.0))
对于某些人群来说,我已经使这个人口年复一年地增加了以下论坛:
double pc(0.0); // pc = population entered
while (pc <= initial_population)
{
cout << "How many billion (> 7) ? ";
cin >> pc;
};
int temp(year);
do {
++temp;
cout << "Population in " << temp << " : " <<
initial_population * exp ( (final_year - initial_year) * (rate/ 100.0))
<< endl;
}
while ( pc > initial_population *
exp ( (final_year - initial_year) * (rate/ 100.0)));
我现在想让这个人口增长率在初始人口增加一倍的情况下被除以2,并且直到人口达到输入人口时才显示这个人口增长率为&#34; pc&#34;。显然,这个过程必须比grow_rate没有划分的时间更长,结果应该是这样的:
Population in 2012 : 7.085 ; growth rate : 1.2 %
Population in 2013 : 7.17 ; growth rate : 1.2 %
Population in 2014 : 7.257 ; growth rate : 1.2 %
Population in 2015 : 7.344 ; growth rate : 1.2 %
...
Population in 2068 : 13.87 ; growth rate : 1.2 %
Population in 2069 : 14.04 ; growth rate : 0.6 %
Population in 2070 : 14.12 ; growth rate : 0.6 %
...
Population en 2195 : 29.02 ; growth rate : 0.3 %
我在C ++中所知道的只是for和for while循环,当然还有if else语句。
有没有人可以帮助我,我不需要有完美的答案,只需要一些帮助,如何开始这一部分。例如,当人口加倍等时如何制作声明。?
非常感谢。
答案 0 :(得分:2)
将initial_population值(乘以2)保存在单独的变量中。然后检查每次迭代是否current_population(我组成的变量,但它的值应该是显而易见的)大于或等于另一个存储变量,再次将该值乘以2并将增长率分成两半。像这样:
double population_doubled_check_val = initial_population * 2;
double current_population;
do {
++temp;
current_population = initial_population * exp ( (final_year - initial_year) * (rate/ 100.0));
cout << "Population in " << temp << " : " << current_population << endl;
if (current_population >= population_doubled_check_val) {
population_doubled_check_val *= 2;
rate /= 2;
}
}
while ( current_population < pc );
我不认为copypasta会起作用,但它应该给你一个想法。顺便说一句,如果您提供一个完整的,最小化的实现来举例说明问题但仍然可以编译,那么它会很有帮助。没有其他原因比得到更快的答案。 :)