如何在FORTRAN中循环时获取值

时间:2013-05-05 13:36:47

标签: for-loop fortran

大家好!据说有1.2亿人口,每年增加8%。我希望从1990年到2020年有一个DO循环,说明人口超过1.25亿的年份。伪代码或Fortran代码将不胜感激。

3 个答案:

答案 0 :(得分:4)

对于哪些循环是必要的或适当的,这不是问题。简单的等式

num_years = log(125.0/120.0)/log(1.08)

(评估为大约0.53)就是必要的。这是复合利息计算公式的直接重写,即

compound_amt = initial_amt * (1+interest_rate)**num_years

,在这种情况下,initial_amt = 120*10**6compound_amt = 125*10**6interest_rate = 8%

答案 1 :(得分:2)

很容易在Fortran中找到解决问题的循环教程。请参阅此处example。但一般来说,你想要这样的东西:

sum=120e6
startyear=1990
do i = 1,30
     sum = sum + sum*8./100.
     if sum > 125e6 then
         write(*,*), "Year ", i+startyear, " population exceeded ", sum
     end if
end do

答案 2 :(得分:0)

population = 120000.0
year = 1990
loop:
population = population + (population * 0.08)
year = year + 1
if (population > 125000.0) go to print_done
if (year > 2020) go to print_not_found
go to loop

print_done:
print "The population was " population " in the year " year
stop

print_not_found:
print "Searched to year " year " and the population only reached " population
stop

请注意,在检查人口之前或之后是否应该增加年份是一个问题。这取决于您是否希望年初或年末的人口(假设初始值是在年初)。