Gerade, ungerade, Rest einer Division

  • Hallo
    Ich suche eine Möglichkeit herauszufinden ob eine Variable durch 2 teilbar ist.
    Kann ich direkt herausfinden ob die Variable gerade (EVEN) oder ungerade (ODD) ist?
    Wie kann ich den Rest hinter dem Komma filtern?


    Vielen Dank

  • Schritt für Schritt zum Roboterprofi!
  • DECL REAL Ausgangswert,HaelfteAusgangswert,Rest
    DECL INT GanzzahligerTeil



    HaelfteAusgangswert = AusgangsWert / 2
    GanzzahligerTeil = HaelfteAusgangswert
    Rest = HaelfteAusgangswert - GanzzahligerTeil


    If Rest == 0 THEN
    EVEN = TRUE
    ELSE
    ODD = TRUE
    ENDIF

    Einmal editiert, zuletzt von zteve ()

  • So geht's am einfachsten:


    IF (iZahl B_AND 1) == 0 THEN
    ; gerade
    ELSE ; (iZahl B_AND 1) == 1
    ; ungerade
    ENDIF


    Suchfunktion nutzen! :zwink:

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Es steht fest:
    Jede Zahl wird intern binär verarbeitet.


    Code
    IF (iZahl B_AND 1) == 0 THEN


    Jede Binärzahl, die bitweise "und" mit 1 verknüpft wird hat als Ergebnis 1 oder 0.

    Code
    ; gerade

    Jede gerade Zahl bringt bei dieser Operation "0" als Ergebnis.

    Code
    ELSE ; (iZahl B_AND 1) == 1
      ; ungerade


    Es folgt: Jede ungerade Zahl bringt bei dieser Operation "1" als Ergebnis.

    Code
    ENDIF

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • Hallo,


    zum Rest einer Division (engl. Modulo) hier eine Funktion.

    Code
    GLOBAL DEFFCT INT Modulo (n :IN, m :IN)
    DECL INT n, m
     IF n==0 THEN
      RETURN 0
     ENDIF
     IF m==0 THEN
      RETURN 0
     ENDIF
     RETURN n - ( n / m ) * m
    ENDFCT

    Kontrolle ist eine Illusion, denn niemand weiss was als nächstes passiert.


  • Ich habe so etwa nach allem gesucht aber nichts gefunden.


    Also, bitte...Suchbegriff: ungerade :zwink:
    Vierter Treffer ist von mir genannter Code...


    WolfHenk: :danke:


    Man könnte als folgende Funktion erstellen:


    Code
    DEFFCT BOOL EVEN(iValue:IN)
    INT iValue
    BOOL bResult
    bResult = (iValue B_AND 1) == 0)
    RETURN bResult
    ENDFCT

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

    Einmal editiert, zuletzt von IrrerPolterer ()

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden