DO循环在Fortran中排除多个值

时间:2013-03-25 12:19:25

标签: loops fortran

如何在Fortran中实现这一目标?

    do i = 1, n Except n/2

是否有方便的方式而不是在循环中使用'if'?

3 个答案:

答案 0 :(得分:5)

有很多解决方案。这是一个使用cycle的人。它在循环中仍然有if语句,但没有if ... end if块。

MyLoop: do i=1, N
   if ( i == N/2 ) cycle MyLoop

   !  use the loop....
   write (*, *) i
end do MyLoop

答案 1 :(得分:4)

如果您厌恶循环中的条件

do i  = 1,(n/2)-1
 ...
end do
do i = (n/2)+1,n
 ...
end do

如果n是,或者可能是奇数,则需要调整循环的停止/启动索引。

答案 2 :(得分:1)

在循环中放置if语句

do i=1,n
  if (i /= n/2) ...
end do

或带有掩码或forall语句的where语句可以在某些情况下使用。