Hoe werkt de Modulus-operator?

Laten we zeggen dat ik de uitvoer van een array moet opmaken om een ​​vast aantal elementen per regel weer te geven. Hoe ga ik om het gebruik van Modulus-operatie?

Gebruik C++, de onderstaande code werkt voor het weergeven van 6 elementen per regel, maar ik heb geen idee hoe en waarom het werkt?

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

Wat als ik 5 elementen per regel wil weergeven? Hoe vind ik de exacte expressie nodig?


Antwoord 1, Autoriteit 100%

In C++ Expression a % bRetourneert de rest van de divisie van een door B (als ze positief zijn. Voor negatieve nummers Teken van resultaat is de uitvoering gedefinieerd). Bijvoorbeeld:

5 % 2 = 1
13 % 5 = 3

Met deze kennis kunnen we proberen uw code te begrijpen. Conditie count % 6 == 5betekent dat Newline wordt geschreven wanneer de rest van de divisie tellen met 6 vijf is. Hoe vaak gebeurt dat? Precies 6 regels uit elkaar (oefenen: schrijf nummers 1..30 en onderstreep degenen die aan deze aandoening voldoen), beginnend bij 6-TH-lijn (Count = 5).

Om het gewenste gedrag van uw code te krijgen, moet u de toestand wijzigen in count % 5 == 4, wat geeft u de 5 lijnen, beginnend bij 5-TELLEN (Count = 4) .


Antwoord 2, Autoriteit 17%

In principe Modulus-operator geeft u rest
Eenvoudig voorbeeld in wiskunde Wat is er over / rest van 11 gedeeld door 3? antwoord is 2

Voor hetzelfde ding C++ heeft Modulus-operator (‘%’)

Basiscode voor uitleg

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

Wat wordt weergegeven

rest is 2


Antwoord 3, autoriteit 7%

Dit JSFiddle-project kan u helpen te begrijpen hoe modulus werkt:
http://jsfiddle.net/elazar170/7hhnagrj

De modulusfunctie werkt ongeveer als volgt:

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

Antwoord 4, autoriteit 5%

Het geeft je de rest van een deling.

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

Antwoord 5, autoriteit 5%

Je kunt de modulus-operator zien als een rest. tel % 6 deelt 6 zo vaak als het kan van de tel en geeft je een rest van 0 tot 5 (Dit zijn alle mogelijke resten omdat je 6 al zo vaak hebt gedeeld als je kunt). De elementen van de array worden allemaal afgedrukt in de for-lus, maar elke keer dat de rest 5 is (elk 6e element), wordt een nieuwe regel weergegeven. Dit geeft je 6 elementen per regel. Gebruik voor 5 elementen per regel

if (tel % 5 == 4)

Other episodes