2012-09-23 9 views
14

Powiedzmy, że muszę sformatować dane wyjściowe tablicy, aby wyświetlić stałą liczbę elementów w linii. Jak mam to zrobić, korzystając z modułu modulus?Jak działa operator modulus?

Poniższy kod służy do wyświetlania 6 elementów w wierszu, ale nie mam pojęcia, jak i dlaczego to działa?

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

Co jeśli chcę wyświetlić 5 elementów w linii? Jak znaleźć potrzebne dokładne wyrażenie?

Odpowiedz

1

Daje ci pozostałą część podziału.

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

Możesz myśleć o tym, że operator modulus daje Ci pozostałą część. policz% 6 dzieli 6 zliczeń tyle razy, ile może, i daje resztę od 0 do 5 (są to wszystkie możliwe pozostałości, ponieważ już dzieliłeś 6 tyle razy, ile możesz). Elementy tablicy są drukowane w pętli for, ale za każdym razem, gdy reszta to 5 (co 6 element), wyprowadza znak nowego wiersza. Daje to 6 elementów na linię. Przez 5 elementów na linii użyciu

jeśli (liczba% 5 == 4)

23

C++ ekspresji a % b Reszta z podziału A przez B (jeżeli jest dodatnia. Dla liczb ujemnych znak wyniku jest zdefiniowana implementacja). Na przykład:

5 % 2 = 1 
13 % 5 = 3 

Dzięki tej wiedzy możemy spróbować zrozumieć Twój kod. Warunek count % 6 == 5 oznacza, że ​​znak nowej linii zostanie zapisany, gdy pozostała część liczby dzielenia przez 6 to pięć. Jak często to się dzieje? Dokładnie 6 linii od siebie (ćwiczenie: wpisz liczby 1.30 i podkreśl te, które spełniają ten warunek), zaczynając od 6-tej linii (liczba = 5).

Aby uzyskać pożądane zachowanie z kodu, należy zmienić warunek na count % 5 == 4, co da znak nowej linii co 5 wierszy, począwszy od piątej linii (liczba = 4).

+3

"Dla liczb ujemnych sig n wyniku to implementacja zdefiniowana "Nie jest tak w C++ 11 - patrz ISO14882: 2011 (e) 5.6-4 lub https://stackoverflow.com/questions/7594508. –

1

Zasadniczo moduł Operator daje reszta prosty przykład w matematyce, co zostało powyżej/pozostałą część 11 dzielone przez 3? Odpowiedź jest 2

na samo C++ ma modulo operatora ('%')

kod podstawowy dla wyjaśnienia

#include <iostream> 
using namespace std; 


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

    return 0; 
} 

co spowoduje wyświetlenie

reszta jest 2

Powiązane problemy