Pergunta

Dizer, eu quero uma rotina de parar de uma vez de uma an é encontrado em uma matriz.Como posso fazer isso?

"se (matriz(i) .eq.NA) ..." parece não funcionar.Obrigado,

ATUALIZAÇÃO:

matriz é uma matriz de números em ponto flutuante, por exemplo.,

REAL ::arrya(35)

Foi útil?

Solução

Se você está realmente olhando para NaNs e você tem até uma data compilador, em seguida, o ieee_is_nan() função deve fazer o truque.Eu acho que você vai precisar para use ieee_arithmetic ou um dos outros intrínseca IEEE módulos.

Se o seu compilador não é tão nova, ela pode ter o comumente implementado, mas não-padrão isnan() função.

Outras dicas

Você pergunta não é bem restrita.É array uma matriz de seqüências de caracteres?exemplo:

character(len=20) :: array(40)

Se este for o caso, você deve ser capaz de fazer:

do i=1,40
   if(array(i).eq."NA")then
       exit
   else
       !do something else
   endif
enddo

Se esta é uma matriz de números em ponto flutuante (e nao é definido para ser de algum ponto flutuante constante), você pode querer ter cuidado, pois as operações de ponto flutuante são raramente exata e erro de arredondamento pode causar um cálculo que seria matematicamente equivalente para avaliar a diferentes valores.Em outras palavras, a solução para este problema depende realmente de como NA e array são declaradas...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top