У меня есть следующая программа на Фортране
PROGRAM main
IMPLICIT NONE
INTEGER :: i
INTEGER,dimension(:),allocatable :: x0
allocate(x0(1:25))
DO i=1,25
x0(i)=i
END DO
print*,"maxloc de x0 est 25, en effet",maxloc(x0)
print*,"Cinq fois maxloc(x0)",INT(maxloc(x0))
print*,"f applique a la fonction",f(maxloc(x0))
print*,"f1 applique a la fonction",f1(INT(maxloc(x0)))
CONTAINS
FUNCTION f(maxlocec)
IMPLICIT NONE
!Entrées
INTEGER,dimension(1) :: maxlocec
!Sorties
INTEGER,dimension(1) :: f
f=maxlocec**2
END FUNCTION f
FUNCTION f1(maxlocec)
IMPLICIT NONE
!Entrées
INTEGER :: maxlocec
!Sorties
INTEGER :: f1
f1=maxlocec**2
END FUNCTION f1
END PROGRAM
, когда я ее запускаю, я получаю следующее сообщение об ошибке:
print*,"f1 applique a la fonction",f1(INT(maxloc(x0)))
1
Error: Rank mismatch in argument 'maxlocec' at (1) (0 and 1)
Я попытался f1(maxloc(x0))
, и она не работала,поэтому я подумал, что f1(INT(maxloc(x0)))
будет работать, а это не так.
Вывод maxloc
представляется целым числом, но это не так.Как это решить?