How does the modulus operator work?

Tex Qas picture Tex Qas · Sep 24, 2012 · Viewed 293.5k times · Source

Let's say that I need to format the output of an array to display a fixed number of elements per line. How do I go about doing that using modulus operation?

Using C++, the code below works for displaying 6 elements per line but I have no idea how and why it works?

for ( count = 0 ; count < size ; count++)
{
    cout << somearray[count];
    if( count % 6 == 5) cout << endl;
}

What if I want to display 5 elements per line? How do i find the exact expression needed?

Answer

KCH picture KCH · Sep 24, 2012

in C++ expression a % b returns remainder of division of a by b (if they are positive. For negative numbers sign of result is implementation defined). For example:

5 % 2 = 1
13 % 5 = 3

With this knowledge we can try to understand your code. Condition count % 6 == 5 means that newline will be written when remainder of division count by 6 is five. How often does that happen? Exactly 6 lines apart (excercise : write numbers 1..30 and underline the ones that satisfy this condition), starting at 6-th line (count = 5).

To get desired behaviour from your code, you should change condition to count % 5 == 4, what will give you newline every 5 lines, starting at 5-th line (count = 4).