modulo division in c++

stan2008

Lt. Junior Grade
Registriert
Sep. 2008
Beiträge
333
Nachdem ich mir endlich vorgenommen habe mal mit c++ anzufangen (:D) stellt sich mir nun auch das erste Hindernis, wobei ich mir nicht sicher bin ob ich oder das Buch schuld ist.
Folgendes Problem:
bei einer modulo division passiert doch z.B. folgendes:

21 % 4: man dividiert 21 / 4 = 5,25; abgerundet auf 5(?)

nun nehme man die 5 und multipliziert sie mit 4(?), dem dividor(?) = 20

zu letzt subtrahiert man von der 21 die erhalten 20(?) => 21 % 4 = 1

jetzt gibts in meinem schlauem büchlein (c++ lernen und professionell anwenden ^^) folgende übung: 7 % 4 * 3; ergebnis: 9,
wäre schön wenn jemand mir das erklären könnte, schon im forum und google gesucht, leider nichts gefunden, was mir helfen könnte :(
 
Modulo gibt dir immer den Rest zurück, in deinem Beispiel:
7 % 4 * 3 passiert folgendes:
7 % 4 ergibt den Rest 3
3 * 3 ergint 9....



Wenn du einfach nur wissen willst, wie oft eine Zahl in eine ander paßt mußt du einfach nur casten (weiß nicht wie genau das in C++ geht):
int x = int(7 / 4)
 
Division: Divident/Divisor = Quotient, nix mit Dividor...

-------------

Die Restoperation (auch Modulo-Operation) ist eine binäre Operation, die nur auf ganze Zahlen angewandt wird. Das Ergebnis ist wiederum eine ganze Zahl.

Die Restoperation definiert sich demnach so:
R(a,b)=a-a/b*b (a,b sind ganze Zahlen, / und * sind gleichrangig)


Warum ist nun 7 % 4 * 3 = 9

Die Restoperation ist gleich priorisiert wie die Multiplikation und die Division (Punktrechenart). Da die beiden Operationen % und * demnach die gleiche Priorität haben, werden sie nacheinander ausgeführt.

7 % 4 = 3 da 7 - 7 / 4 * 4 = 3 (im Bereich der ganzen Zahlen)
Zur Verdeutlichung können Klammern gesetzt werden:
7 - (7 / 4) * 4 = 3
= 7 - 1 * 4 = 3
= 7 - 4 = 3

Diese 3 ist nun wiederum der 1. Faktor für die Multiplikation mit 3.
Da 3 * 3 = 9 ist, ist nun auch 7 % 4 * 3 = 9, da der Term 7 % 4 zu 3 evaluiert.
 
Puh, viiiiiieeeelen Dank euch beiden (ich IDIOT :D)
 
Zurück
Oben