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

두 번째 줄에 '암시 적 없음'을 사용하고 뒤 따르는 컴파일 문제를 수정하십시오. – francescalus

+0

나는 암시적인 none과 fixed Gm을 사용했지만 여전히 같은 사용을 % 35 cpu와 doesnt finish –

답변

2

Gm 선언하고 real 될 암시하지 않습니다. Gm 값은 설정되지 않았지만 0 일 가능성이 큽니다. 따라서 은 항상 동일합니다. 이 ((Gm*t/r**2)*t)입니다. 을 입력하고 싶습니다. Gm((Gm*t/r**2)*t)입니다.

항상 implicit none을 프로그램에 사용하십시오. 그것은 매우 중요합니다.

그리고 정수형 표현이기 때문에 10**(-11)은 0입니다. 부동 소수점 표현식의 지수는 E 또는 D이어야합니다.

+0

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

+1

10 ** (- 11) 대신 E-11을 사용하고 도움을 주신 덕분에 해결했습니다. –

+0

다음 경우에 대답을 받아 들여야합니다. if 그것은 당신의 문제를 해결했습니다. – Ross

관련 문제