/ / Ako preskočiť niekoľko iterácií v slučke do Fortran - slučky, fortran, fortran90, fortran77, do-loops

Ako preskočiť niekoľko opakovaní v slučke do Fortran - slučky, fortran, fortran90, fortran77, do-loops

Napríklad chcem smyčka od 1 do 500 pri prírastku 2. Avšak pre každých 8 slučiek chcem preskočiť nasledujúcich 18 slučiek (urobiť to do premennej zvýšenie o 18). Ako to urobím?

Môj kód je:

event = 0
do i = 1,500,2
event = event + 1
if (event .eq. 8) then
i = i + 18
event = 0
endif
enddo

Mám však chybu: "Do-premenná v tele DO sa nesmie objaviť v kontexte premennej definície". V podstate nemôžem meniť premennú "i" v slučke. Takže ako by som mal napísať kód, aby som si to uvedomil?

Vďaka.

odpovede:

4 pre odpoveď č. 1

Je zakázané upravovať index slučky. Môžete vyriešiť svoj problém niekoľkými spôsobmi. Napríklad tu je riešenie bez explicitného indexu slučiek:

i = -1
do
i=i+2
if(i > 5000) exit
if (i == 15) i=i+18
...
enddo

1 pre odpoveď č. 2

zvážte vnorenú slučku pre tento príklad, niečo ako

  do k=0,15
do j=0,7
i=34*k+2*j  ! 34 == 18+2*8
....
end do
end do

(pravdepodobne nemám aritmetické právo, ale vidíte nápad)