Как работает оператор модуля?

Скажем, что мне нужно отформатировать вывод массива для отображения фиксированного количества элементов в строке. Как мне это сделать, используя операцию модуляции?

Используя C++, приведенный ниже код работает для отображения 6 элементов в строке, но я понятия не имею, как и почему он работает?

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

Что делать, если я хочу отображать 5 элементов в строке? Как найти точное выражение?

Ответ 1

в выражении C++ a % b возвращает остаток деления a на b (если они положительны. Для отрицательных чисел знак результата определяется реализацией). Например:

5 % 2 = 1
13 % 5 = 3

С помощью этих знаний мы можем попытаться понять ваш код. Счет состояния count % 6 == 5 означает, что новая строка будет записана, если остаток деления на 6 равен пяти. Как часто это происходит? Точно 6 линий друг от друга (упражнение: записывайте числа 1..30 и подчеркивайте те, которые удовлетворяют этому условию), начиная с 6-й строки (счет = 5).

Чтобы получить желаемое поведение от вашего кода, вы должны изменить условие на count % 5 == 4, что даст вам новую строку каждые 5 строк, начиная с 5-й строки (count = 4).

Ответ 2

В основном модуль оператора дает вам простой простой пример в математике, что осталось/осталось от 11, деленное на 3? ответ 2

за то же самое C++ имеет оператор модуля ('%')

Основной код для объяснения

#include <iostream>
using namespace std;


int main()
{
    int num = 11;
    cout << "remainder is " << (num % 3) << endl;

    return 0;
}

Что будет отображаться

остаток составляет 2

Ответ 3

Это дает вам остальную часть дивизии.

int c=11, d=5;
cout << (c/d) * d + c % d; // gives you the value of c

Ответ 4

Вы можете думать о модуле оператора как о том, чтобы дать вам остаток. count% 6 делит 6 из счета столько раз, сколько может, и дает вам остаток от 0 до 5 (это все возможные остатки, потому что вы уже разделили 6 столько раз, сколько сможете). Элементы массива печатаются в цикле for, но каждый раз, когда остаток равен 5 (каждый шестой элемент), он выводит символ новой строки. Это дает вам 6 элементов в строке. Для 5 элементов в строке используйте

if (count% 5 == 4)

Ответ 5

Этот проект JSFiddle может помочь вам понять, как работает модуль: http://jsfiddle.net/elazar170/7hhnagrj

 function modulus(x,y){
   var m = Math.floor(x / y);
   var r = m * y;
   return x - r;
 }