Convert thefunction subprogram to subroutine subprogram: *----------------------
ID: 3613139 • Letter: C
Question
Convert thefunction subprogram to subroutine subprogram:*-------------------------------------------------------------------------*
PROGRAM FIBONACCI
* THIS PROGRAM USES FUNCTION FIB TO
* CALCULATE AS MANY TERMS OF THE SEQUENCE
* AS REQUIRED BY THE MAIN PROGRAM
INTEGER K, MAX, ANSWER, FIB, FIBON, TEMFIB(20)
REAL RATIO
MAX = 15
TEMFIB(1)=1
TEMFIB(2)=1
PRINT 10
10 FORMAT(4X, 'FIBONACCI SEQUENCE, FROM TERM 3')
PRINT 20
20 FORMAT(12X, 'SERIES', 8X, 'RATIO')
DO K = 3, MAX
ANSWER = FIB(K)
TEMFIB(K)=ANSWER
IF (K.EQ.3) THEN
RATIO = 1
ELSE
* RATIO = REAL(FIB(K))/REAL(FIB(K-1))*
RATIO = REAL(ANSWER)/REAL(TEMFIB(K-1))
END IF
PRINT 30, ANSWER, RATIO
30 FORMAT(10X, I6, 7X, F9.4)
END DO
END PROGRAM FIBONACCI
*------------------------------------------------------------------------*
FUNCTION FIB(LIMIT) RESULT(FIBON)
INTEGER LIMIT, J, FIBON, FS(100)
FS(1) = 1
FS(2) = 1
DO J = 3, LIMIT
FS(J)= FS(J-1) + FS(J-2)
FIBON = FS(J)
END DO
RETURN
END FUNCTION FIB
*-------------------------------------------------------------------------* Convert thefunction subprogram to subroutine subprogram:
*-------------------------------------------------------------------------*
PROGRAM FIBONACCI
* THIS PROGRAM USES FUNCTION FIB TO
* CALCULATE AS MANY TERMS OF THE SEQUENCE
* AS REQUIRED BY THE MAIN PROGRAM
INTEGER K, MAX, ANSWER, FIB, FIBON, TEMFIB(20)
REAL RATIO
MAX = 15
TEMFIB(1)=1
TEMFIB(2)=1
PRINT 10
10 FORMAT(4X, 'FIBONACCI SEQUENCE, FROM TERM 3')
PRINT 20
20 FORMAT(12X, 'SERIES', 8X, 'RATIO')
DO K = 3, MAX
ANSWER = FIB(K)
TEMFIB(K)=ANSWER
IF (K.EQ.3) THEN
RATIO = 1
ELSE
* RATIO = REAL(FIB(K))/REAL(FIB(K-1))*
RATIO = REAL(ANSWER)/REAL(TEMFIB(K-1))
END IF
PRINT 30, ANSWER, RATIO
30 FORMAT(10X, I6, 7X, F9.4)
END DO
END PROGRAM FIBONACCI
*------------------------------------------------------------------------*
FUNCTION FIB(LIMIT) RESULT(FIBON)
INTEGER LIMIT, J, FIBON, FS(100)
FS(1) = 1
FS(2) = 1
DO J = 3, LIMIT
FS(J)= FS(J-1) + FS(J-2)
FIBON = FS(J)
END DO
RETURN
END FUNCTION FIB
*-------------------------------------------------------------------------*
Explanation / Answer
please rate - thanks I figured out how to link program compiles, links, runs *-------------------------------------------------------------------------* * THIS PROGRAM USES FUNCTION FIB TO * CALCULATE AS MANY TERMS OF THE SEQUENCE * AS REQUIRED BY THE MAIN PROGRAM INTEGER K, MAX, ANSWER,FIB, TEMFIB(20) REAL RATIO MAX = 15 TEMFIB(1)=1 TEMFIB(2)=1 PRINT 10 10 FORMAT(4X, 'FIBONACCI SEQUENCE, FROM TERM3') PRINT 20 20 FORMAT(12X, 'SERIES', 8X, 'RATIO') DO K = 3, MAX ************** ANSWER =FIB(K) CALL FIB(K,ANSWER) TEMFIB(K)=ANSWER IF (K.EQ.3) THEN RATIO = 1 ELSE ******** RATIO = REAL(FIB(K))/REAL(FIB(K-1))* RATIO = REAL(ANSWER)/REAL(TEMFIB(K-1)) END IF PRINT 30, ANSWER, RATIO 30 FORMAT(10X, I6, 7X, F9.4) END DO END *-------------------------------------------------------------------------* SUBROUTINE FIB(LIMIT,FIBON) INTEGER LIMIT, J, FIBON, FS(100) FS(1) =1 FS(2)= 1 DO J = 3,LIMIT FS(J)= FS(J-1) + FS(J-2) FIBON = FS(J) END DO RETURN END