Fortran“ ANY”函数错误,同时检查数组是否包含值

问题描述 投票:0回答:1

我希望检查一个2D数组是否包含另一个1D数组的值。

   do i=1,nlines
   do j=1,nchecks(i)
   if (type(i).eq.4) then
   do k=1,nlines
   do l=1,nchecks(k)
   if (type(k).eq.3) then
   if (ANY(con(i,j)==id(k))) then
   ...

但是我遇到以下错误:

test1.f(98): error #6361: An array-valued argument is required in this context.   [ANY]
       if (ANY(conn(i,j)==id2(k))) then

我做错了什么?我也尝试过类似的>>

   do i=1,nlines
   do j=1,nchecks(i)
   if (type(i).eq.4) then
   r1=conn(i,j)
   do k=1,nlines
   do l=1,nchecks(k)
   if (type(k).eq.3) then
   if (ANY(r1==id(k))) then
   ...

但是这也带来了相同的错误。所有变量均已正确定义,格式无误。我是否以错误的方式使用ANY命令?

我希望检查一个2D数组是否包含另一个1D数组的值。做i = 1,nlines做j = 1,nchecks(i)如果(type(i).eq.4)然后做k = 1,nlines做l = 1,nchecks(k)如果(type(k).eq .3),然后...

arrays for-loop if-statement fortran
1个回答
0
投票

您的问题是,ANY是一种归约运算,它需要将许多值存储在逻辑数组中,并将它们缩减为单个值,在本例中为.True。是数组中的任何值为true还是.False。如果所有这些都是假的。这是一个非常简单的示例

© www.soinside.com 2019 - 2024. All rights reserved.