Ошибка: Неклассифицируемый оператор при вызове функции в Фортране - PullRequest
0 голосов
/ 03 июня 2018

Почему я получаю Error: Unclassifiable statement?

Я использую Fortran 95 и использую компиляцию Fortran онлайн: http://rextester.com/l/fortran_online_compiler

program main
  implicit none
    real::p = 0
    p=3**5 * exp(-3)/call fact(5)

    print*,p

end program main


function fact(n)
    implicit none
    integer :: n
    integer :: i
    integer :: fact

    if (n < 0)then
       fact = 1

    else   
       do i = 2, n, 1
          fact = fact * i
       end do

    end if   
end function fact

Ошибка:

 p=3**5 * exp(-3)/call fact(5)
   1 Error: Unclassifiable statement at (1)

1 Ответ

0 голосов
/ 03 июня 2018

Вы не можете вызвать функцию, используя оператор call, то есть только для подпрограмм.Вы просто используете имя функции

 p=3**5 * exp(-3.0)/fact(5)

Аргумент exp должен быть real (например, -3.0).

Вы должны либо поместить функцию в модуль (лучше) или сделать его внутренним (между contains и end program) или, по крайней мере, объявить его тип

 integer :: fact

в вызывающей его программе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...