1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
FUNCTION carre(vect)
IMPLICIT NONE
REAL, DIMENSION (:) :: vect
REAL, DIMENSION(SIZE(vect)) :: carre
INTEGER :: i
DO i = 1,SIZE(vect)
carre(i) = vect(i) * vect(i)
END DO
END FUNCTION carre
PROGRAM vecteur
IMPLICIT NONE
REAL,DIMENSION(5) :: vect,resu
INTEGER :: i,n
INTERFACE
FUNCTION carre(vect)
REAL, DIMENSION (:) :: vect
REAL, DIMENSION(SIZE(vect)) :: carre
INTEGER :: i
END FUNCTION carre
END INTERFACE
EXTERNAL carre
n = 5;
!initialisation du vecteur aléatoirement
DO i = 1,n
vect(i) = REAL(rand(0)*45)+1
END DO
!affichage de celui-ci
DO i = 1,n
WRITE(6,*) 'vect(',i,') = ',vect(i)
END DO
!! resu = carre(vect);
CALL select_transfo(vect,carre)
DO i = 1,n
WRITE(6,*) 'vect(',i,') = ',resu(i)
END DO
CONTAINS
! la subroutine qui va appeler la fonction carre en argument
SUBROUTINE select_transfo(vect,fonct)
REAL, DIMENSION (:) :: vect
REAL, DIMENSION (:) :: fonct
vect = carre(vect);
END SUBROUTINE select_transfo
END PROGRAM vecteur |
Partager