我正在使用fortran 90,并且希望计算出现数量时,两个数字出现在数组中。如何计算fortran中矩阵中的数字的出现?
flag=0
q=0
do k=1,ncolumns
if (conn(m,k)==i .and. conn(m,k)==l) flag=1
enddo
if (flag==1) q=q+1
write (*,*) q
这里,conn(m,k)是矩阵,由m行和k列组成。我想读conn(m,k),并计算当conn(m,k)中包含数字i和l时发生的次数。我知道上面的代码不会工作,因为它只打印出0,因为如果循环有问题。但我不能用'.or'。因为我希望计数当我和l都包含在conn(m,k)中时。我如何检查数字我和我是否包含在conn?
我修改了上面像
ncolumns=2
flag=0
q=0
do k=1,ncolumns
!!!if (conn(m,k)==i .and. conn(m,k)==l) flag=1
if (((conn(m,1)==i).and.(conn(m,2)==l)).or.((conn(m,1)==l).and.(conn(m,2)==i))) flag=1
enddo
if (flag==1) q=q+1
write (*,*) q
也能正常工作的代码,但你可以看到,这个代码是荒谬的,因为我需要手动定义K,特别是当“ncolumns”是庞大的数字。我如何用索引来做到这一点?
同样,如何检查2个或更多的具体数字是否包含在矩阵中,例如fortran中的conn(m,k)?谢谢。
@HighPerformanceMark第一种可以更紧密。 'conn'是一个矩阵,我想知道'conn'有多少行同时有2个或更多的数字,比如3和12。并计算它的发生。例如,如果conn中有3行共有两个元素(如3和12),则打印的q应该是3. – exsonic01 2014-11-05 16:43:05
@HighPerformanceMark第二个示例代码的'ncolumns = 2'就是示例。实际上,conn是巨大的矩阵。它是5000行×15列的矩阵,由众多的数据块组成 – exsonic01 2014-11-05 16:48:45