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)

Était-ce utile?

La solution

Si vous êtes vraiment à la recherche de NaNs 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...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top