How to Implement a Circular Counter?
I Want to Make a Circular Counter in C Programming. First Variable Can Store Value from 0-3. Second Variable Asks the Value from User (From 0-3). Third...
I want to make a circular counter in C programming. First variable can store value from 0-3. Second variable asks the value from user (from 0-3). Third variable asks user to move either left or right
If third variable is left the second variable should move left:
3->2
2->1
1->0
0->3
Similarly if third variable is right the second variable should move right:
0->1
1->2
2->3
3->0
2 Answers
#include <stdio.h>
int main(void)
{
int max = 3, num, i;
num = 0;
for (i = 0; i < 10; i++) {
printf("%d\n", num);
num = (num + 1) % (max + 1);
}
puts("--");
num = max;
for (i = 0; i < 10; i++) {
printf("%d\n", num);
num = (max - -num) % (max + 1);
}
return 0;
}
Output:
0
1
2
3
0
1
2
3
0
1
--
3
2
1
0
3
2
1
0
3
2
If you wrap at a power of two, then this technique will work.
#include <stdio.h>
typedef struct
{
unsigned int x : 2; /* Holds up to 4 values */
} SmallInt;
int main()
{
SmallInt up = {0};
SmallInt down = {0};
for (int z = 0; z < 10; z++)
{
printf("%d %d\n", up.x, down.x);
up.x++;
down.x--;
}
return 0;
}