2017-02-20 5 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

2番目の行に 'implicit none'を使用して、それに続くコンパイルの問題を修正してください。 – francescalus

+0

私は暗黙のなしと固定Gmのものを使用しましたが、それでも同じ35%のCPUを使用しています。 –

答えて

2

Gm宣言しrealであることを暗黙のうちにあるされていません。 Gmの値は設定されていませんが、0になる可能性は非常に高いです。したがって、rは常に同じです。 Gm((Gm*t/r**2)*t)が入力されている可能性があります。

あなたのプログラムでは常にimplicit noneを使用してください。それは非常に重要です。

10**(-11)は整数式なので、ゼロであることがわかりました。浮動小数点式の指数にはEまたはDを使用する必要があります。

+0

(*、*)((G * m/r ** 2)*(t ** 2) –

+1

10 **( - 11)の代わりにE-11を使って解決しました。 –

+0

あなたは答えを受け入れるべきですそれはあなたの問題を解決しました。 – Ross

関連する問題