placn
C PLACN SOURCE PV 17/12/05 21:17:01 9646 c c c ajoute un element (de valeur iel) dans un segment extensible c s il n y est deja a la place iplace. C Sort en erreur si l'element etait deja present c et renseigne le segment invLis pour aller plus vite c numlis indique s'il faut maintenir une liste inverse ou non c integer nlisse integer invPGD integer iel,iplace,ilis,ntab integer numlis -INC PPARAM -INC CCOPTIO -INC TMCOLAC segment TABSEG integer leau(nTab) endsegment pointeur invLis.ILISSE pointeur itab.TABSEG nlisse = invLis.iliseg(/1) invPGD = invLis.npgcd if(numlis.eq.1) then if((iel-1)/invPGD.gt.nlisse) then nlisse = (iel-1)/invPGD*1.2 segadj invLis endif ilis= invLis.iliseg((iel-1)/invPGD) if(ilis.eq.0) then C l'element n est pas encore dans le tableau nTab=itab.leau(/1) if(iplace.gt.nTab) then nTab=iplace segadj itab endif itab.leau(iplace)=iel invLis.iliseg((iel-1)/invPGD)=iplace else * verif que c'est la bonne pile if (itab.leau(ilis).ne.iel) then write (6,*) ' incoherence placn ',itab,iel,ilis,nlisse, & numlis,itab.leau(ilis) else write(6,*) 'PLACN Probleme:' write(6,*) 'l element est dans deja dans la liste' endif moterr(1:8)='ajoun' interr(1)=iel return endif else nTab=itab.leau(/1) do ilis=1,nTab if(itab.leau(ilis).eq.iel) then write(6,*) 'PLACN Probleme:' write(6,*) 'l element est dans deja dans la liste' return endif enddo if(iplace.gt.nTab) then nTab=iplace segadj itab endif itab.leau(iplace)=iel endif return end
© Cast3M 2003 - Tous droits réservés.
Mentions légales