Reputation: 11
I created a program to calculate Fibonacci numbers, using a subprogram that contains functions. how to call the function in my main program in visual studio
ps: i use intel compiler
the function that i make is bellow
program function_fibonacci
implicit none
function fibonacci (n1,n2,n)
integer, intent(in)::n1,n2,n
integer::fibonacci(1:n),i
fibonacci(1)=n1
fibonacci(2)=n2
do i=3,n
fibonacci(i)=fibonacci(i-1)+fibonacci(i-2)
end do
end program function_fibonacci
than how can i call that function in my main code
program fibonacci
integer ::n1,n2,n
print *, 'input the first fibonacci number'
read *, n1
print *, 'input the second fibonacci number'
read *, n2
print *, 'how many Fibonacci numbers do you want to display?'
read *, n
print *, 'Result'
print *, fibonacci(n1,n2,n)
end program fibonacci
if we use linux we can just type
gfortran -g main_program.f90 -o program.exe
Upvotes: 1
Views: 215
Reputation: 1524
Your program needs a contains
section
program test_fibonacci
implicit none
print *, fibonacci(1,2, 8)
contains
function fibonacci (n1,n2,n)
integer, intent(in)::n1,n2,n
integer::fibonacci(1:n),i
fibonacci(1)=n1
fibonacci(2)=n2
do i=3,n
fibonacci(i)=fibonacci(i-1)+fibonacci(i-2)
end do
end program
Upvotes: 0
Reputation: 59998
Your syntax is invalid. You cannot write
program function_fibonacci
implicit none
function fibonacci (n1,n2,n)
...
You can either make the function internal to the program (not recommended) or put it into a module (recommended). Creating the function separate as external is not possible here because the function returns an array and is not recommended in general. How to declare the type of a function that returns an array in Fortran?
module functions
implicit none
contains
function fibonacci (n1,n2,n)
integer, intent(in)::n1,n2,n
integer::fibonacci(1:n),i
fibonacci(1)=n1
fibonacci(2)=n2
do i=3,n
fibonacci(i)=fibonacci(i-1)+fibonacci(i-2)
end do
end function
end module
program fibonacci
use functions
implicit none
integer ::n1,n2,n
print *, 'input the first fibonacci number'
read *, n1
print *, 'input the second fibonacci number'
read *, n2
print *, 'how many Fibonacci numbers do you want to display?'
read *, n
print *, 'Result'
print *, fibonacci(n1,n2,n)
end program fibonacci
Upvotes: 2