평균이상의 고장 시간 출력(allocatable array 이용)

PROGRAM Failure

IMPLICIT NONE

REAL, DIMENSION(:), ALLOCATABLE :: FailureTime
INTEGER :: NumTimes, I, OpenStatus, InputStatus
REAL :: Sum, Mean_Time
CHARACTER(20) :: FileName

WRITE (*, '(1X, A)', ADVANCE = "NO") "처리할 고장 목록의 수(ex:50) : "
READ *, NumTimes

ALLOCATE(FailureTime(NumTimes))

WRITE (*, '(1X, A)', ADVANCE = "NO") "자료 파일 이름(20자 이내)을 입력하시오 : "
READ *, FileName

OPEN (UNIT = 15, FILE = FileName, STATUS = "OLD", IOSTAT = OpenStatus)

IF (OpenStatus > 0) THEN
STOP "*** 파일을 열 수 없음 ***"
END IF

DO I = 1, NumTimes

READ (UNIT = 15, FMT = *, IOSTAT = InputStatus) FailureTime(I)

IF (InputStatus > 0) THEN
STOP "*** 입력 에러 ***" ! 프로그램 종료하기
END IF

IF (InputStatus < 0) THEN
EXIT ! DO 루프 빠져나가
END IF

END DO

CLOSE(15)

Sum = 0.0

DO I = 1, NumTimes
Sum = Sum + FailureTime(I)
END DO

Mean_Time = Sum / REAL(NumTimes)
PRINT '(/ 1X, "Mean time to failure = ", F6.1)', Mean_Time

PRINT *
PRINT *, "List of failure time greater than the mean:"

DO I = 1, NumTimes
IF (FailureTime(I) > Mean_Time) THEN
PRINT '(1X, F9.1)', FailureTime(I)
END IF
END DO

DEALLOCATE(FailureTime)

END PROGRAM Failure

위 소스를 08_02_Failure.f95로 저장

자료 파일

99.5
133.8
84.2
217.5
188.8
103.1
93.9
165.0
68.3
111.
88.8
88.2
90.1
70.2
150.5
122.9
138.8
99.9
111.6
155.7
133.4
122.2
93.4
101.5
109.9
103.3
177.7
188.1
99.8
144.4
87.5
79.3
190.2
190.3
170.1
160.9
121.1
95.6
140.5
177.2
150.1
140.3
139.2
113.8
155.9
144.4
88.3
83.5
101.1
112.8

자료 파일을 08_01_Failure.dat로 저장

프로그램 컴파일 및 프로그램 테스트



+ Recent posts