operador - residuo de una division en c++
¿Cómo funciona el operador de módulo? (5)
Digamos que necesito formatear la salida de una matriz para mostrar un número fijo de elementos por línea. ¿Cómo hago para hacer eso usando la operación de módulo?
Con C ++, el código siguiente 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?
Básicamente, el operador de módulo le da un resto simple. Ejemplo en matemáticas ¿Qué queda de / resto de 11 dividido por 3? la respuesta es 2
para lo mismo C ++ tiene operador de módulo (''%'')
Código básico para explicación.
#include <iostream>
using namespace std;
int main()
{
int num = 11;
cout << "remainder is " << (num % 3) << endl;
return 0;
}
Que mostrará
el resto es 2
Este proyecto de JSFiddle puede ayudarte a comprender 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;
}
Puede pensar que el operador de módulo le da un resto. count% 6 divide 6 de la cuenta tantas veces como pueda y le da un resto de 0 a 5 (Estos son todos los posibles residuos porque ya ha dividido 6 tantas veces como sea posible). Todos los elementos de la matriz se imprimen en el bucle for, pero cada vez que el resto es 5 (cada elemento 6), se genera un carácter de nueva línea. Esto te da 6 elementos por línea. Para 5 elementos por línea, use
si (cuenta% 5 == 4)
Te da el resto de una división.
int c=11, d=5;
cout << (c/d) * d + c % d; // gives you the value of c
en la expresión de C ++ a % b
devuelve el resto de la división de a por b (si son positivos. Para números negativos, el signo de resultado está definido por la implementación). Por ejemplo:
5 % 2 = 1
13 % 5 = 3
Con este conocimiento podemos tratar de entender su código. El count % 6 == 5
condición count % 6 == 5
significa que la nueva línea se escribirá cuando el resto del conteo de división entre 6 sea cinco. ¿Con qué frecuencia ocurre esto? Exactamente 6 líneas separadas (ejercicio: escriba los números 1..30 y subraye los que satisfacen esta condición), comenzando en la línea 6-th (cuenta = 5).
Para obtener el comportamiento deseado de su código, debe cambiar la condición para count % 5 == 4
, lo que le dará una nueva línea cada 5 líneas, comenzando en la línea 5-th (cuenta = 4).