做... while循环可能if ... else语句里面有临时变量

时间:2014-10-14 01:51:58

标签: c++ if-statement for-loop do-while

在给我之后,我被问到了 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语句。

有没有人可以帮助我,我不需要有完美的答案,只需要一些帮助,如何开始这一部分。例如,当人口加倍等时如何制作声明。?

非常感谢。

1 个答案:

答案 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会起作用,但它应该给你一个想法。顺便说一句,如果您提供一个完整的,最小化的实现来举例说明问题但仍然可以编译,那么它会很有帮助。没有其他原因比得到更快的答案。 :)

相关问题