배열(Array) 이용

평균 이상의 고장 시간 출력

PROGRAM Failure

IMPLICIT NONE

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

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

END PROGRAM Failure

위 소스를 08_01_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로 저장

프로그램 컴파일 및 테스트



위 소스의 다음 부분을 아래와 같이 고칠 수 있다.

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

위 부분을
READ (15, *) FailureTime

or


READ (15, *) (FailureTime(I), I = 1, NumTimes)


+ Recent posts