fortran-courses/Intermediate Fortran/Section 2 - Procedure Attri.../pure_and_elemental_solution...

40 lines
1.0 KiB
Fortran

program pure_and_elemental_exercise
implicit none
integer, parameter :: PRIMES(*) = [2, 3, 5, 7, 11]
integer, parameter :: REAL_ANSWER = 1872
integer :: answer
! Replace '42' with an expression using elemental functions
! that calculates the equivalent of the following:
! answer = 0
! do i = 1, size(PRIMES)
! answer = answer + (primes(i) * 3)**2
! end do
answer = sum(square(multiply_by_three(PRIMES)))
! Note: intrinsic operators are already elemental, so the following works too
! answer = sum((PRIMES * 3)**2)
if (answer == REAL_ANSWER) then
print *, "You got it! :)"
else
print *, answer
print *, "Not passing yet :("
end if
contains
! put your functions down here
elemental function multiply_by_three(number) result(multiplied_by_three)
integer, intent(in) :: number
integer :: multiplied_by_three
multiplied_by_three = number * 3
end function
elemental function square(number) result(squared)
integer, intent(in) :: number
integer :: squared
squared = number ** 2
end function
end program