![]() |
|
|
![]()
|
|
| omican |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 21.9.2007 Репутация: нет Всего: нет |
Вот кусок кода, написанного в древности:
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? Это сообщение отредактировал(а) omican - 21.9.2007, 19:14 |
|||
|
||||
| popovda |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 9.6.2006 Где: Москва Репутация: нет Всего: 6 |
Код правильный. Все нормально.
-------------------- С уважением, Попов Д.А. |
|||
|
||||
| Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: 1 Всего: 41 |
Если быть строгим, то лучше сказать, что у If есть не только else, но и else if (кажется, их даже вместе можно писать), так что структуризовать лучше даже так:
Но это для нас, фортранистов, сишникам это, может, не так легко понять Это сообщение отредактировал(а) Cr@$h - 17.1.2009, 18:04 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Fortran | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |