Was macht die Modulo Funktion in Racket?

  • Hallo,


    versuche gerade herauszufinden was die Modulo Funktion in Racket genau macht.



    Selbst mit der Doku steig ich nicht ganz durch. Vielleicht ist jemand so lieb und könnte mir schnell auf die Sprünge helfen. :verycool:


    MfG

  • Code
    1. [B][COLOR=#228B22]-10.0[/COLOR][/B] => [B][COLOR=#228B22]3[/COLOR][/B] * (-4) = [B]-12.0[/B] => ([B][COLOR=#228B22]-10.0[/COLOR][/B] - ([B]-12.0[/B])) = [B][COLOR=#843C24]2.0
    2. [/COLOR][/B]
    3. [B][COLOR=#228B22]10.0[/COLOR][/B] => [B][COLOR=#228B22]-3[/COLOR][/B] * (-4) = [B]12.0[/B] => ( [B][COLOR=#228B22]10.0[/COLOR][/B] - [B]12.0[/B]) = [B][COLOR=#843C24]-2.0[/COLOR][/B]


    Am einfachsten überlegst du dir mit welcher Zahl du 3 multiplizieren musst, um -10.0 knapp zu "überholen". Die Differenz dazu wäre dann der gesuchte Rest.
    Wenn du z.B. immer 3 abziehst, kommst du nach 4mal bei -12 an (-3, -6, -9, -12). Dann musst du noch die Differenz berechnen.
    Das zweite Beispiel funktioniert analog dazu. Du zählst immer 3 dazu, bis du nach 4mal bei 12 ankommst (3, 6, 9, 12) und bildest dann noch die Differenz.

  • Du siehst hier den Unterschied zwischen der Operation Modulo (modulo) und der Operation Divisionsrest (remainder): wenn das zweite Argument der Modulo-Funktion negativ ist, wird angenommen, dass dich der negative Divisionsrest (also nicht "von der nächstkleineren Ganzzahl hinauf", sondern "von der nächstgrößeren Ganzzahl runter") interessiert.


    Leider habe ich auf die Schnelle nichts Vergleichbares in Racket gefunden, aber die funktionale Programmiersprache Haskell enthält die zwei Funktionen divMod (Division und Modulus) und quotRem (Quotient und Rest), die das ganz gut verdeutlichen:

    Code
    1. > divMod 10 (-3)
    2. (-4,-2)
    3. > quotRem 10 (-3)
    4. (-3,1)


    (10 = 4 · 3 − 2 = 3 · 3 + 1)

    ~~ Ondra „Ravu al Hemio“ Hošek
    I know what PC LOAD LETTER means


    Tutor außer Dienst · OOP · OS · PK · PP