| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Fortran > [General] О IF, end IF и CONTINUE |
| Автор: omican 21.9.2007, 19:13 |
| Вот кусок кода, написанного в древности: DO 4 I=I1,N1 IF(K.EQ.2) FI(I)=Q*(FTD(I+1)-FTD(I)) S=-1.0D+00 IF(FI(I).GE.0) S=1.0D+00 FI(I)=DABS(FI(I)) IF(I.EQ.I1) THEN *** F3=S*FT(I+1) IF(F3.LT.FI(I)) FI(I)=F3 ELSE IF(I.EQ.N1) THEN F1=S*FT(I-1) IF(F1.LT.FI(I)) FI(I)=F1 ELSE F1=S*FT(I-1) F3=S*FT(I+1) IF(F1.LT.FI(I)) FI(I)=F1 IF(F3.LT.FI(I)) FI(I)=F3 END IF IF(FI(I).LT.0) THEN * FI(I)=0 ELSE FI(I)=S*FI(I) END IF 4 CONTINUE На строки, не выделенные жирным, обращать внимания не надо. Сейчас я пытаюсь написать на C++ идентичный код. Итак, вопрос: мне кажется, или не хватает одного "END IF", закрывающего IF, помеченный ***? В каком случае тогда выполняется кусок начинающийся с строки помеченной *? В случае не I.EQ.I1? |
| Автор: popovda 24.9.2007, 15:49 | ||
Код правильный. Все нормально.
|
| Автор: Cr@$h 17.1.2009, 18:03 | ||
Если быть строгим, то лучше сказать, что у If есть не только else, но и else if (кажется, их даже вместе можно писать), так что структуризовать лучше даже так:
Но это для нас, фортранистов, сишникам это, может, не так легко понять |