Exercice 1. Commenter chaque instruction et expliquer ce que font les subroutines dans le module suivant
MODULE Janvier02
IMPLICIT NONE
TYPE Postale
CHARACTER (LEN = 30) :: ville
INTEGER :: code
END TYPE Postale
CONTAINS
RECURCIVE SUBROUTINE Mystere (Tab)
TYPE(Postale), DIMENSION (:), INTENT(INOUT) :: Tab
INTEGER :: Taille
INTEGER, DIMENSION(1) :: Grand
Taille= SIZE(Tab)
IF (Taille > 0) THEN
Grand = MAXLOC(Tab(:)%code)
CALL Swap (Grand(1), Taille)
CALL Mystere (Tab(1:taille-1))
ENDIF
CONTAINS
SUBROUTINE Swap(I,J)
INTEGER, INTENT(IN) :: I,J
TYPE(Postale) :: Tamp
Tamp = Tab(I)
Tab(I) = Tab(J)
Tab(J) = Tamp
END SUBROUTINE Swap
END SYBROUTINE Mystere
END MODULE Janvier02
Si
est de taille 4, donner un exemple d'initialisation du tableau.
Ensuite, imprimer le tableau après l'appel de la subroutine Mystere(Tab).
Exercice 2.
L(J:k+1, k-1:I+k) = V( J-2:k-1, 1:I+2)*W( I+J+5:I+k+6, J+1:J+I+2)
write(*,'(I5,I5)')I,J
write(*,'(I5,4/,I5)')I,J
write(*,'(F8.2,2X,E12.4)')x,y
Exercice 3.
Soit
une matrice creuse telle que
pour
. On stocke alors
la matrice sous la forme
REAL, DIMENSION(N,4) :: A
et on désigne par
| A(i,1) | la sous-sous-diagonale | ( |
| A(i,2) | la sous-diagonale | ( |
| A(i,3) | la diagonale | ( |
| A(i,4) | la sur-diagonale | ( |
Dans la suite de l'exercice, toutes les matrices utilisées
sont stockées sous cette forme.
.
Ecrire une fonction : FUNCTION Jacobi (b, A)
permettant de calculer
.
On pourra écrire dans un module une surdéfinition de l'opérateur
(
), afin que l'opération suivante
soit valide.