Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Fortran > [General] Цикл с удвоенным счетчиком.


Автор: Vitaly333 30.9.2009, 23:18
Как сделать цикл, чтобы на каждой итерации цикла счетчик увеличивался на 2
Так правильно:
Код

do i=min,max,i+2
! do something
enddo

Автор: kemiisto 1.10.2009, 00:01
Цитата(Vitaly333 @  1.10.2009,  00:18 Найти цитируемый пост)
Так правильно

Очень маловероятно. smile 

Задачу полностью можно услышать? А то непонятно, что именно тебе нужно.

Навскидку:
Код

PROGRAM app

  IMPLICIT NONE
  
  INTEGER, PARAMETER :: min = 0
  INTEGER, PARAMETER :: max = 100
  
  INTEGER :: i, h
  
  i = min
  h = 0
  
  DO WHILE (i <= max)
    PRINT *, i
    h = h + 2
    i = i + h
  END DO

END PROGRAM app

Автор: Фантом 11.10.2009, 14:41
Цитата(Vitaly333 @  30.9.2009,  23:18 Найти цитируемый пост)
Так правильно:


Нет. Правильно так:
Код

do i=min,max,2
! do something
enddo

Автор: kemiisto 11.10.2009, 15:16
Фантом, ты совершенно прав. smile 
Цитата(Vitaly333 @  1.10.2009,  00:18 Найти цитируемый пост)
Как сделать цикл, чтобы на каждой итерации цикла счетчик увеличивался на 2


Сейчас перечитал вопрос и ужаснулся. Я что-то перемудрил. Подумалось, что надо, чтобы на каждой итерации на 2 увеличивался шаг, а не счётчик. smile 

Автор: popovda 15.10.2009, 14:55
Не стоит изменять значения счетчика в циклах со счетчикомsmile Т.е. циклы do i =... (for-циклы). Косяки будут. Лучше в этих случаях использовать "глухой цикл"

Код

loop: do

...
if( условие ) exit loop
...
end do loop


Это сейчас рекомендуемая стандартом вместо цикла do while конструкция. Она и более гибкая, и более надежная, когда значения счетчика цикла меняются с каким-то переменным шагом.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)