2017-02-20 11 views
2

Я не могу понять, почему это происходит, но когда я запускаю программу, это становится бесконечным циклом. Что я делаю неправильно?Почему моя программа заканчивается бесконечным циклом?

program Hello 
    REAL K1,K2,RP,G,m,t,time,R1,R2 
    G = 6.67384 * (10**(-11)) 
    m = 5.9723E24  
    t = 0.1    
    RP = 6371000    
    K1 = 15      
    K2 = 10       
    R1 = K1 + RP 
    R2 = K2 + RP 
    r = R1 
    DO WHILE (r > R2) 
    r = r - ((Gm*t/r**2)*t) 
    time = time + t 
    END DO 
write (*,*) "Time = seconds" 
write (*,*) (Gm*t/r**2) 
end program Hello 
+0

Пожалуйста, используйте 'implicit none' как вторую строку и исправьте следующие проблемы компиляции. – francescalus

+0

Я использовал неявный и фиксированный предмет Gm, но его все тот же использует% 35 cpu и не заканчивает –

ответ

2

Gm не объявлен и неявно быть real. Значение Gm не установлено, но это очень вероятно 0. Поэтому r все время.

Возможно, вы хотели ввести G*m, но у вас есть Gm в ((Gm*t/r**2)*t).

Всегда используйте implicit none в своих программах. Это очень важно.

И как вы оказались 10**(-11) равно нулю, поскольку это целое выражение. E или D должны использоваться для экспоненты в выражениях с плавающей запятой.

+0

write (*, *) ((G * m/r ** 2) * (t ** 2) Я сделал то, что вы сказали мне, что я использую это, и все же он говорит, что он равен 0. –

+1

Я решил, что использовал E-11 вместо 10 ** (- 11) и его решила спасибо за помощь :) –

+0

Вы должны принять ответ, если он решил вашу проблему. – Ross

Смежные вопросы