Results 1 to 4 of 4
  1. #1

    Title
    Veteran
    Join Date
    May 2016
    Posts
    4
    Thanks Thanks Given 
    1
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts

    Was macht die Modulo Funktion in Racket?

    Hallo,

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

    Code:
    > (modulo 10 3) // Klar normale Division Rest wird zurückgegeben
    1
    > (modulo -10.0 3) // Wie komme ich hier auf 2.0?
    2.0
    > (modulo 10.0 -3) // Wie komme ich hier auf -2.0?
    -2.0
    > (modulo -10 -3) // Klar normale Division Rest wird zurückgegeben
    -1
    Selbst mit der Doku steig ich nicht ganz durch. Vielleicht ist jemand so lieb und könnte mir schnell auf die Sprünge helfen.

    MfG

  2. #2
    1student's Avatar
    Title
    Super Moderator
    Join Date
    Aug 2011
    Location
    Disneyland Vienna
    Posts
    1,716
    Thanks Thanks Given 
    291
    Thanks Thanks Received 
    1,012
    Thanked in
    866 Posts
    Code:
    -10.0 =>  3 * (-4) = -12.0 => (-10.0 - (-12.0)) =  2.0
    
     10.0 => -3 * (-4) =  12.0 => ( 10.0 -   12.0)  = -2.0
    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.
    "If you can dream it, you can do it."
    -- Walt Disney
    ʘ‿ʘ

  3. #3
    Ravu al Hemio's Avatar
    Title
    Super Moderator
    Join Date
    Dec 2009
    Location
    einmal TU, immer TU
    Posts
    1,435
    Thanks Thanks Given 
    129
    Thanks Thanks Received 
    676
    Thanked in
    481 Posts
    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:
    > divMod 10 (-3)
    (-4,-2)
    
    > quotRem 10 (-3)
    (-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

  4. #4

    Title
    Veteran
    Join Date
    May 2016
    Posts
    4
    Thanks Thanks Given 
    1
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Danke Leute jetzt habe ich es verstanden!

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •