Подтвердить что ты не робот

Fortran: Как проверить, содержит ли массив значение?

Я видел, что это спрашивало о других языках, но, только что узнав, как красиво fortran может обрабатывать массивы, я думал, что может быть простой способ сделать это без циклов.

В настоящее время я просматриваю трехмерный массив, смотрящий на "ближайших соседей", чтобы увидеть, содержат ли они букву "n", и всякий раз, когда он находит это значение, я хочу, чтобы он выполнял какое-то назначение clusterLabel (что не имеет значения для этого вопроса)

Я хотел использовать if(lastNeighArray.eq."n") then...<rest of code> но по очевидным причинам он не любит проверять массив на значение. Мне также нравится использовать lastNeighArray(:), хотя я бы хотел, чтобы он проверял каждый из элементов по одному. where(lastNeighArray.eq."n") не работает, поскольку у меня есть оператор case внутри цикла where, и я получаю ошибку WHERE statements and constructs must not be nested.

Итак, я немного застрял. Я действительно хочу что-то вроде when(lastNeighArray.eq."n"), но этого не существует.

Я также посмотрел на any и forall, но они не кажутся правильным выбором.

Справка

4b9b3361

Ответ 1

ЛЮБОЙ должен быть правильным выбором

if ( ANY( lastNeighArray=="n" ) ) then

есть также ВСЕ, если вы хотите, чтобы весь массив содержал это значение.