¿Cómo funciona el operador de módulo?

Digamos que necesito formatear la salida de una matriz para mostrar una cantidad fija de elementos por línea. ¿Cómo hago eso usando la operación de módulo?

Usando C ++, el siguiente código funciona para mostrar 6 elementos por línea, pero no tengo idea de cómo y por qué funciona.

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

¿Qué pasa si quiero mostrar 5 elementos por línea? ¿Cómo encuentro la expresión exacta necesaria?

en la expresión de C ++ a % b devuelve el rest de la división de a by b (si son positivos. Para los números negativos, el signo de resultado es la implementación definida). Por ejemplo:

 5 % 2 = 1 13 % 5 = 3 

Con este conocimiento, podemos tratar de entender su código. count % 6 == 5 condiciones count % 6 == 5 significa que se escribirá nueva línea cuando el rest del recuento de divisiones por 6 sea cinco. ¿Con qué frecuencia ocurre esto? Exactamente 6 líneas separadas (ejercicio: escriba los números 1.30 y resalte los que satisfacen esta condición), comenzando en la 6ª línea (recuento = 5).

Para obtener el comportamiento deseado de su código, debe cambiar la condición para count % 5 == 4 , lo que le dará línea nueva cada 5 líneas, comenzando en la 5ª línea (conteo = 4).

Básicamente, el operador del módulo le da un rest simple Ejemplo en matemáticas lo que sobra / rest de 11 dividido por 3? la respuesta es 2

por lo mismo C ++ tiene modulus operator (‘%’)

Código básico para explicación

 #include  using namespace std; int main() { int num = 11; cout << "remainder is " << (num % 3) << endl; return 0; } 

Que mostrará

rest es 2

Te da el rest de una división.

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

Puede pensar que el operador de módulo le da un rest. count% 6 divide 6 veces del conteo tantas veces como sea posible y te da un rest de 0 a 5 (Estos son todos los posibles residuos porque ya dividiste 6 tantas veces como puedas). Los elementos de la matriz se imprimen todos en el ciclo for, pero cada vez que el rest es 5 (cada 6º elemento), emite un carácter de nueva línea. Esto le da 6 elementos por línea. Para 5 elementos por línea, use

if (contar% 5 == 4)

Este proyecto JSFiddle puede ayudarte a entender cómo funciona el módulo: http://jsfiddle.net/elazar170/7hhnagrj

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