wedtorque Ответов: 1

Как реализовать круговой счетчик?


Я хочу сделать круговой счетчик в программировании на языке Си. Первая переменная может хранить значение от 0 до 3. Вторая переменная запрашивает значение у пользователя (от 0-3). Третья переменная просит пользователя двигаться влево или вправо

Если третья переменная остается слева, то вторая переменная должна двигаться влево:

3 - > 2
2 - > 1
1 - > 0
0 - > 3
Точно так же если третья переменная права вторая переменная должна двигаться вправо:

0 - > 1
1-> 2
2 - > 3
3 - > 0

Что я уже пробовал:

я попробовал модуль, но он не работает на краях

OriginalGriff

Это не очень хороший вопрос - мы не можем понять из этого малого, что вы пытаетесь сделать.
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли.
Так что, возможно, если вы покажете нам, что вы пробовали, ценности, которые вы ему подкармливали, и результаты, которые вы получили, и те, которые вы ожидали, это может помочь.
Используйте виджет" улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

Patrice T

Покажите код, который не работает. Я точно знаю, что модуль работает.

1 Ответов

Рейтинг:
7

0x01AA

Цитата:
я попробовал модуль, но он не работает на краях

Вы упоминаете только "..., но не работаете в ребрах", но не описываете то, что не работает, то есть то, что вы ожидаете и что получаете.

Я предполагаю, что вы не получаете правильное значение для 0 - > 3, потому что вы делаете что-то вроде этого: (0 - 1) % 4 и вы ожидаете 3, но получаете -1.

Почему -1 % 4 == -1 вы можете найти в литературе, т. е. Операция по модулю-Википедия, свободная энциклопедия[^]

Для вас трюк, чтобы исправить это:
const int cRange= 4;
int position;  // defined and set anywhere in your program..
int direction; // will be +1 or -1, defined and set anywhere in your program..
position= (Position + direction + cRange) % cRange;

Наконец, для позиции == 0 и направления -1:
(0 - 1 + 4) % 4 => 3
или положение = 3, а направление - + 1:
(3 + 1 + 4) % 4 => 0
Надеюсь, это поможет.