배열(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)
'Programming > Fortran' 카테고리의 다른 글
평균 계산(함수의 인자로 배열 사용) (0) | 2008.09.16 |
---|---|
평균이상의 고장 시간 출력(allocatable array 이용) (0) | 2008.09.16 |
하노이 탑 이동(재귀 서브루틴을 이용) (0) | 2008.09.16 |
사다리꼴 적분 근사(내부 프로그램을 서브루틴의 인수로 사용) (0) | 2008.09.15 |
사다리꼴 적분 근사(외부 프로그램을 서브루틴의 인수로 사용) (0) | 2008.09.15 |