Nickolay.info. Алгоритмы. Цикл, выполняемый "туда и обратно"

В задаче требовалось сделать "циклический" переключатель между несколькими состояниями, например, модель кнопки, у которой больше 2 состояний и она переключает режимы своей работы по закону 1-2-3-2-1-2-3-2-1-..., то есть, состояния переходят "туда и обратно". У меня в коммуникаторе, скажем, подобная экранная кнопка отвечает за управления тремя уровнями яркости подсветки.

Самым простым и очевидным решением кажется смена знака у переменной приращения аргумента d при достижении верхней или нижней границы изменения счётчика.

В представленном примере на консольном Си цикл выполняется до нажатия любой клавиши.

#include <stdio.h>
#include <bios.h>

void main () {
 int n1=1,n2=3, //Верхняя и нижняя границы счетчика
     n=n1, //Счетчик, начинаем от нижней границы
     d=1; //Шаг изменения счетчика
 do {
  printf ("%d ",n);
  n+=d;
  if (n==n1 || n==n2) d=-d;
 } while (!bioskey(1));
}

Рейтинг@Mail.ru

вверх гостевая; E-mail