서브루틴을 이용하여 도분초를 도로 표시하기

PROGRAM Angle

IMPLICIT NONE

INTEGER :: NumDegrees, NumMinutes, NumSeconds
CHARACTER(1) :: Response

DO

WRITE (*, '(1X, A)', ADVANCE = "NO") "도, 분 및 초를 입력하시오(ex : 100, 30, 36) : "

READ *, NumDegrees, NumMinutes, NumSeconds

CALL PrintDegrees(NumDegrees, NumMinutes, NumSeconds)

WRITE (*, '(/ 1X, A)', ADVANCE = "NO") "더 하시겠습니까? (Y or N)? "

READ *, Response

IF (Response /= "Y") EXIT

END DO

CONTAINS

SUBROUTINE PrintDegrees(Degrees, Minutes, Seconds)

INTEGER, INTENT(IN) :: Degrees, Minutes, Seconds

PRINT '(1X, I3, " degrees", I3, " minutes", I3, " seconds" / 1X, "is equivalent to" / 1X, F7.3 " degrees")', &
Degrees, Minutes, Seconds, &
REAL(Degrees) + REAL(Minutes) / 60.0 + REAL(Seconds) / 3600.0

END SUBROUTINE PrintDegrees

END PROGRAM Angle

위 소스를 07_01_Angle.f95로 저장

컴파일 및 프로그램 테스트



+ Recent posts