Loops 在Fortran中执行循环排除多个值

Loops 在Fortran中执行循环排除多个值,loops,fortran,Loops,Fortran,如何在Fortran中实现这一点 do i = 1, n Except n/2 有没有一种方便的方法来代替在循环中使用“if”呢?在循环中放置一个if语句 do i=1,n if (i /= n/2) ... end do 或者带掩码的forall语句,或者在某些情况下可以使用where语句。在循环中放置if语句 do i=1,n if (i /= n/2) ... end do 或者带掩码的forall语句,或者在某些情况下可以使用where语句。如果您不喜欢循环中的条件

如何在Fortran中实现这一点

    do i = 1, n Except n/2

有没有一种方便的方法来代替在循环中使用“if”呢?

在循环中放置一个
if
语句

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

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

在循环中放置
if
语句

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

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

如果您不喜欢循环中的条件句

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

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

如果你厌恶循环中的条件句

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

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

有很多解决方案。这里是一个使用
循环的。循环中仍然有一个
if
语句,但没有
if。。。如果
阻塞,则结束

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

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

有很多解决办法。这里是一个使用
循环的。循环中仍然有一个
if
语句,但没有
if。。。如果
阻塞,则结束

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

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

在循环中使用条件语句有什么错?在循环中使用条件语句有什么错?