평균이상의 고장 시간 출력(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로 저장
프로그램 컴파일 및 프로그램 테스트
'Programming > Fortran' 카테고리의 다른 글
평균 계산(Assumed-Shape Array, 형상가정 배열 사용) (0) | 2008.09.17 |
---|---|
평균 계산(함수의 인자로 배열 사용) (0) | 2008.09.16 |
평균 이상의 고장 시간 출력(배열 이용) (0) | 2008.09.16 |
하노이 탑 이동(재귀 서브루틴을 이용) (0) | 2008.09.16 |
사다리꼴 적분 근사(내부 프로그램을 서브루틴의 인수로 사용) (0) | 2008.09.15 |