Question
Dire, je veux une routine de s'arrêter une fois un NA est trouvé dans un tableau.Comment puis-je faire cela?
"si (tableau(i) .eq.NA) ..." semble ne pas fonctionner.Merci,
Mise à JOUR:
tableau est un tableau de nombres flottants, par exemple.,
REAL ::arrya(35)
La solution
Si vous êtes vraiment à la recherche de NaN
s et vous avez une mise à jour du compilateur, alors la ieee_is_nan()
la fonction devrait faire l'affaire.Je pense que vous aurez besoin de use ieee_arithmetic
ou l'une de l'autre intrinsèque IEEE modules.
Si votre compilateur n'est pas si nouveau, il peut avoir le plus couramment mis en œuvre, mais non-standard isnan()
fonction.
Autres conseils
Vous question n'est pas très bien contrainte.Est array
un tableau de chaînes de caractères?par exemple
character(len=20) :: array(40)
Si c'est le cas, vous devriez être en mesure de faire:
do i=1,40
if(array(i).eq."NA")then
exit
else
!do something else
endif
enddo
Si c'est un tableau de nombres à virgule flottante (et NA est défini pour être certains de virgule flottante constante), vous voudrez peut-être prudent que les opérations à virgule flottante sont rarement exactes et de l'erreur d'arrondi peuvent causer un calcul mathématiquement équivalente à fait évaluer à des valeurs différentes.En d'autres termes, la solution à ce problème dépend vraiment de la façon dont NA
et array
sont déclarés...