Télécharger ifidic.eso

Retour à la liste

Numérotation des lignes :

  1. C IFIDIC SOURCE CHAT 05/01/13 00:32:50 5004
  2. SUBROUTINE IFIDIC(LONTAB,TAB,VAL,
  3. $ IDX,
  4. $ IMPR,IRET)
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8 (A-H,O-Z)
  7. C***********************************************************************
  8. C NOM : IFIDIC
  9. C DESCRIPTION : Recherche l'index d'une valeur dans un tableau ordonné
  10. C d'entiers.
  11. C
  12. C Cherche IDX dans un tableau ordonné d'entiers TAB
  13. C tel que : TAB(IDX)=VAL
  14. C La méthode utilisée est un binary search decrite dans
  15. C The art of Programming Vol.3 (D. Knuth)
  16. C
  17. C
  18. C LANGAGE : FORTRAN 77 (sauf (E/S)
  19. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  20. C mél : gounand@semt2.smts.cea.fr
  21. C***********************************************************************
  22. C APPELE PAR : MKIZA
  23. C***********************************************************************
  24. C ENTREES : LONTAB, TAB, VAL
  25. C SORTIES : IDX
  26. C***********************************************************************
  27. C VERSION : v1, 08/10/99, version initiale
  28. C HISTORIQUE : v1, 08/10/99, création
  29. C HISTORIQUE :
  30. C HISTORIQUE :
  31. C***********************************************************************
  32. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  33. C en cas de modification de ce sous-programme afin de faciliter
  34. C la maintenance !
  35. C***********************************************************************
  36. -INC CCOPTIO
  37. INTEGER LONTAB
  38. INTEGER TAB(LONTAB)
  39. INTEGER VAL,IDX
  40. *
  41. INTEGER IMPR,IRET
  42. *
  43. INTEGER IDXINF,IDXMIL,IDXSUP
  44. INTEGER VALMIL
  45. C
  46. C Executable statements
  47. C
  48. IF (IMPR.GT.5) WRITE(IOIMP,*) 'Entrée dans ifidic'
  49. IDXINF=1
  50. IDXSUP=LONTAB
  51. 1 CONTINUE
  52. IF (IDXSUP.LT.IDXINF) GOTO 9998
  53. IDXMIL=(IDXINF+IDXSUP)/2
  54. VALMIL=TAB(IDXMIL)
  55. IF (VAL.LT.VALMIL) THEN
  56. IDXSUP=IDXMIL-1
  57. GOTO 1
  58. ELSEIF (VAL.GT.VALMIL) THEN
  59. IDXINF=IDXMIL+1
  60. GOTO 1
  61. ELSE
  62. IDX=IDXMIL
  63. ENDIF
  64. *
  65. * Normal termination
  66. *
  67. IRET=0
  68. RETURN
  69. *
  70. * Format handling
  71. *
  72. *
  73. * Error handling
  74. *
  75. 9998 CONTINUE
  76. WRITE(IOIMP,*) 'La valeur n''est pas dans le tableau ',
  77. $ 'ou le tableau n''est pas ordonnée...'
  78. 9999 CONTINUE
  79. IRET=1
  80. WRITE(IOIMP,*) 'An error was detected in subroutine ifidic'
  81. RETURN
  82. *
  83. * End of subroutine IFIDIC
  84. *
  85. END
  86.  
  87.  
  88.  
  89.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales