감가상각표 구하기

초기 구입가, 사용 연한 연도, 사용후 잔여가치를 입력

총 감가되는 가치 = 초기 구입가 - 잔여가치

총 사용 연한 = 1 + 2 + ... + 사용 연한 연도 = 연도 * (연도 + 1) /2

1개년 가치 = 총 감가상각 가치 / 총 사용연한

초년도에 가장 많은 감가상각 : (사용연한 - 구하려는 연도 + 1) * 1개년 가치

PROGRAM Depre

IMPLICIT NONE

REAL :: Price, SalvageValue, Amount, ValuePerYear
INTEGER :: UsefulLife, Year, Sum

PRINT *,"초기 구입 가격, 사용 연한, 사용후 잔여가치를 입력하시오(ex:20000, 5, 5000)"
READ *, Price, UsefulLife, SalvageValue

Amount = Price - SalvageValue

Sum = UsefulLife * (UsefulLife + 1) / 2

ValuePerYear = Amount / Sum

Print *,
Print *," Year Depreciation"
Print *,"=========================="

DO Year = 1, UsefulLife

PRINT *, Year, ValuePerYear * (UsefulLife - Year + 1)

END DO

END PROGRAM Depre

위 소스를 04_02_Depre.f95로 저장

컴파일 및 프로그램 테스트



'Programming > Fortran' 카테고리의 다른 글

온도 변환(DO WHILE, END DO)  (0) 2008.08.28
온도변환(DO, EXIT, CYCLE, END DO)  (0) 2008.08.28
곱셈표 (DO, END DO)  (0) 2008.08.27
반가수기(.OR. .AND. .NOT)  (0) 2008.08.27
오염지수 구하기 3(SELECT CASE)  (0) 2008.08.27

곱셈표 출력하기

출력할 곱셈표 단 입력

DO 루프를 이용하여 곱셈표 출력

PROGRAM Multi

IMPLICIT NONE

INTEGER :: M, N, Last_M, Last_N

PRINT *, "출력할 곱셈표 단을 입력하시오(ex:9, 9)"
READ *, Last_M, Last_N

PRINT *," M N M * N"
PRINT *,"==========================="

DO M = 1, Last_M

DO N = 1, Last_N

PRINT *, M, N, M * N

END DO

END DO

END PROGRAM Multi


위 소스를 04_01_Multi.f95로 저장

컴파일 및 프로그램 테스트

DO I = v1, v2, v3
Print *, I
END DO

I의 값을 v1에서 v2까지 출력하는데 v3씩 증가



반가수기

논리형 값 A, B를 입력하고 Sum과 Carry를 계산

PROGRAM Half_Adder

IMPLICIT NONE

LOGICAL :: A, B, Sum, Carry ! 논리형 변수 선언

PRINT *, "논리형 값 A와 B를 입력하시오(ex: T F)"

READ *, A, B

Sum = (A .OR. B) .AND. (.NOT. (A .AND. B))
Carry = A .AND. B

PRINT *, "Carry, Sum = ", Carry, Sum

END PROGRAM Half_Adder

위 소스를 03_05_Haf.f95로 저장

컴파일 및 프로그램 테스트



오염지수 구하기

세 곳의 오염지수를 입력받고 평균을 계산

평균과 기준치와 비교하여 상태 표시

PROGRAM Pollution_3

IMPLICIT NONE

INTEGER :: Level_1, Level_2, Level_3, Index !세 곳의 오염지수와 오염지수 정수 평균

INTEGER, PARAMETER :: LowCutoff = 25, HighCutoff = 50 !기준치 상수

PRINT *, "세 곳의 오염지수를 입력하시오(ex: 1, 2, 3)"

READ *, Level_1, Level_2, Level_3 !세 곳의 오염지수 입력받기

INDEX = (Level_1 + Level_2 + Level_3) / 3 !세 곳의 오염지수의 정수 평균 구하기

SELECT CASE (Index)

CASE (:LowCutoff -1)
PRINT *, "Good Condition"
CASE (LowCutoff : HighCutoff -1)

PRINT *, "Fair Condition"
CASE (HighCutoff:)
PRINT *, "Poor Condition"


END SELECT

END PROGRAM Pollution_3

위 소스를 03_04_Poll_3.f95로 저장

컴파일 및 프로그램 테스트

CASE 사용방법

1)

SELECT CASE (INDEX)

CASE(25)

PRINT *, "INDEX is 25"

DEFAULT

PRINT *, "INDEX is ", Index

END SELECT


INDEX의 값이 25이면 출력

2)


SELECT CASE (INDEX)

CASE(:25)

PRINT *, "INDEX is equal or less than 25"

DEFAULT

PRINT *, "INDEX is ", Index

END SELECT


INDEX의 값이 25이하이면 출력

3)

SELECT CASE (INDEX)

CASE(25 : 50)

PRINT *, "INDEX is equal or more than 25 and equal or less than 50"

DEFAULT

PRINT *, "INDEX is ", Index

END SELECT


INDEX의 값이 25 이상, 50 이하이면 출력


4)

SELECT CASE (INDEX)

CASE(50:)

PRINT *, "INDEX is equal or more than 50"

DEFAULT

PRINT *, "INDEX is ", Index

END SELECT


INDEX의 값이 50 이상이면 출력

오염지수 구하기

세 곳의 오염지수를 입력

오염지수 평균을 구하여 두 개의 기준치와 비교하여 상태 표시

PROGRAM Pollution_2

IMPLICIT NONE

INTEGER :: Level_1, Level_2, Level_3, Index !세 곳의 오염지수와 오염지수 정수 평균

INTEGER, PARAMETER :: LowCutoff = 25, HighCutoff = 50 !기준치 상수

PRINT *, "세 곳의 오염지수를 입력하시오(ex: 1, 2, 3)"

READ *, Level_1, Level_2, Level_3 !세 곳의 오염지수 입력받기

INDEX = (Level_1 + Level_2 + Level_3) / 3 !세 곳의 오염지수의 정수 평균 구하기

IF (Index < LowCutoff) THEN !오염지수 평균이 LowCutoff 보다 작으면

PRINT *, "Good Condition"

ELSE IF (Index < HighCutoff) THEN !오염지수 평균이 HighCutoff보다 작으면

PRINT *, "Fair Condition"

ELSE ! 오염지수 평균이 HighCutoff 이상이면

PRINT *, "Poor Condition"

END IF

END PROGRAM Pollution_2

위 소스를 03_03_Poll_2.f95로 저장

컴파일 및 프로그램 테스트



+ Recent posts