Bonjour,
Après avoir passé un moment sur le forum, je poste ma question... Je vous mets ici un exemple simple "correspondant" à mon problème: je dois créer une procédure qui a pour but de trier les éléments d'un tableau, d'en éliminer certains et d'en conserver d'autres. Par exemple, garder les nombres différents de 2 présents dans un tableau et supprimer les autres. Voilà comment je procède:
où
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 integer :: n integer, dimension(:), allocatable :: tab, tab0 n=10 allocate(tab(10)) do i=1, n tab(i)=i end do call maroutine(n, tab) allocate(tab0(n)) tab0=tab(1:n) deallocate(tab) ...
J'aimerais bien pouvoir me passer d'allouer tab0 et de recopier tab dans tab0. En fait, ce qui serait bien, serait de pouvoir passer tab dans maroutine, et que maroutine modifie elle-même tab en tab0 (notammant qu'elle change la taille de tab).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 subroutine maroutine(n, tab) integer, intent(inout) :: n integer, intent(inout) :: tab integer :: i, j j=0 do i=1, n if(tab(i) .ne. 2) then j=j+1 tab(j)=tab(i) end if end do n=j end subroutine
Est-ce qu'il y a un autre moyen de faire ça? Peut-être avec des pointeurs (je ne suis pas calé sur ce sujet... honte à moi)?
Merci d'avance.
Partager