web-dev-qa-db-ja.com

Fortran配列に値が含まれているかどうかを確認する方法

これが他の言語を要求するのを見たことがありますが、Fortranが配列をいかにうまく処理できるかがわかったところで、ループなしでこれを行う簡単な方法があるのではないかと思いました。

現在、私は「最も近い隣人」を見て3D配列を検索し、それらに「n」の文字が含まれているかどうかを確認しています。この値が見つかるたびに、何らかのclusterLabel割り当てを実行します(これはこの質問には関係ありません)。 )

私はif(lastNeighArray.eq."n") then...<rest of code>を使用したかったのですが、明らかな理由により、配列を値に対してチェックするのは好きではありません。また、各要素を1つずつチェックしたいのですが、lastNeighArray(:)を使用するのも好きではありません。 whereループ内にcaseステートメントがあり、エラー_WHERE statements and constructs must not be nested._が発生するため、where(lastNeighArray.eq."n")は機能しません

だから私は少し行き詰まっています。私が本当に欲しいのはwhen(lastNeighArray.eq."n")のようなものですが、それは存在しません。

anyforallも調べましたが、それらは正しい選択のようには見えません。

33
Pureferret

ANYは実際には正しい選択です

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

配列全体にその値を含める場合は、ALLもあります。

45
Vladimir F