Come funziona l’operatore modulo?

Diciamo che ho bisogno di formattare l’output di un array per visualizzare un numero fisso di elementi per riga. Come faccio a farlo usando l’operazione di modulo?

Usando C ++, il codice qui sotto funziona per visualizzare 6 elementi per riga, ma non ho idea di come e perché funziona?

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

Cosa succede se voglio visualizzare 5 elementi per riga? Come trovo l’espressione esatta necessaria?

nell’espressione C ++ a % b restituisce il resto della divisione di a da b (se sono positivi. Per i numeri negativi il segno del risultato è definito dall’implementazione). Per esempio:

 5 % 2 = 1 13 % 5 = 3 

Con questa conoscenza possiamo provare a capire il tuo codice. count % 6 == 5 condizioni count % 6 == 5 significa che la nuova riga verrà scritta quando il resto del numero di divisione per 6 è cinque. Quante volte succede? Esattamente 6 linee a parte (esercizio: scrivere i numeri 1..30 e sottolineare quelli che soddisfano questa condizione), iniziando dalla linea 6 (numero = 5).

Per ottenere il comportamento desiderato dal tuo codice, dovresti cambiare la condizione per count % 5 == 4 , cosa ti darà newline ogni 5 righe, iniziando dalla 5 ° linea (count = 4).

In pratica l’operatore di modulo ti dà il resto semplice Esempio in matematica cosa è rimasto / resto di 11 diviso per 3? la risposta è 2

per la stessa cosa C ++ ha operatore modulo (‘%’)

Codice di base per la spiegazione

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

Che mostrerà

il resto è 2

Ti dà il resto di una divisione.

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

Puoi pensare all’operatore modulo come dandoti un resto. count% 6 divide 6 out count quante volte può e ti dà un resto da 0 a 5 (Questi sono tutti i possibili remainders perché hai già diviso 6 il numero di volte che puoi). Gli elementi dell’array sono tutti stampati nel ciclo for, ma ogni volta che il resto è 5 (ogni 6 ° elemento), emette un carattere di nuova riga. Questo ti dà 6 elementi per riga. Per 5 elementi per riga, utilizzare

if (count% 5 == 4)

Questo progetto JSFiddle può aiutarti a capire come funziona il modulo: http://jsfiddle.net/elazar170/7hhnagrj

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