1

これをFortranで実現する方法は?

    do i = 1, n Except n/2

ループで「if」を使用する代わりに便利な方法はありますか?

4

3 に答える 3

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
于 2013-03-25T14:28:26.333 に答える
4

ループ内の条件文に嫌悪感がある場合

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

n奇数の場合、または奇数の場合は、ループの停止/開始インデックスを調整する必要があります。

于 2013-03-25T12:41:59.940 に答える
1

ifループ内にステートメントを配置します

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

または、forallマスク付きのステートメントまたはwhereステートメントは、特定の状況で使用できます。

于 2013-03-25T12:39:51.097 に答える