Pers.narod.ru. Алгоритмы. Цикл, выполняемый "туда и обратно" |
В задаче требовалось сделать "циклический" переключатель между несколькими состояниями, например,
модель кнопки, у которой больше 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));
}
|
|