Arrays Fortran:DO循环内的计数器
我有一个数组,我想从中获得一些信息 我写了一个小的DO循环,但我不知道为什么它总是返回Arrays Fortran:DO循环内的计数器,arrays,fortran,do-loops,Arrays,Fortran,Do Loops,我有一个数组,我想从中获得一些信息 我写了一个小的DO循环,但我不知道为什么它总是返回 integer :: inn=0 parameter :: m=115200 real*8 :: da1(m) DO i=1, 115200 IF( i<=19200 .and. da1(i)>1 .and. da1(i)<999.9999 .and. da1(i)<-1 )then inn=inn+1 END IF END DO write(*,*)
integer :: inn=0
parameter :: m=115200
real*8 :: da1(m)
DO i=1, 115200
IF( i<=19200 .and. da1(i)>1 .and. da1(i)<999.9999 .and. da1(i)<-1 )then
inn=inn+1
END IF
END DO
write(*,*) 'inn=',inn
integer::inn=0
参数::m=115200
实*8::da1(m)
i=1115200吗
如果(i1.和.da1(i)问题在于您的条件:
da1(i).gt.1.00 .and. da1(i).lt.999.9999 .and. da1(i).lt.-1.000
一个数字(这里:da1(i)
)怎么能同时是>1
和<-1
?这个条件总是错误的,而且inn
永远不会递增。问题在于你的条件:
da1(i).gt.1.00 .and. da1(i).lt.999.9999 .and. da1(i).lt.-1.000
一个数字(这里:da1(i)
)怎么能同时是>1
和<-1
?这个条件总是假的,inn
永远不会递增。扩展注释而不是答案。循环可以完全替换,可能是
count( da1(1:19200)>1 .and. da1(1:19200)<999.999 )
count(da1(1:19200)>1.and.da1(1:19200)扩展注释而不是答案。循环可以完全替换,可能是
count( da1(1:19200)>1 .and. da1(1:19200)<999.999 )
count(da1(1:19200)>1.和.da1(1:19200)我强烈建议OP使用更可读的语法来查看它。即,使用空格和符号if(i1.和.da1(I)@VladimirF当然,下次我会小心的。谢谢你的建议。@PT2009不需要改变这个问题。在你的代码中使用它以避免将来的错误是很重要的。我强烈建议OP使用更可读的语法来查看它。例如,使用空格和符号if(i1.and.da1(I)@VladimirF当然,下次我会小心的。谢谢你的建议。@PT2009无需更改问题。在代码中使用它以避免将来的错误是很重要的。