Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - gerade und ungerade Zahlen unterscheiden
THF - Di 01.03.05 11:02
Titel: gerade und ungerade Zahlen unterscheiden
Hallo,
gibt es eine Funktion mit der ich gerade und ungerade Zahlen unterscheiden kann.
Eine Procedure soll nur dann ausgeführt werden ,wenn
die Zahl ungerade ist.
Gruß
THF
AXMD - Di 01.03.05 11:13
Delphi-Quelltext
1: 2: 3: 4:
| if Zahl mod 2 = 0 then ShowMessage('Gerade') else ShowMessage('Ungerade'); |
AXMD
Delete - Di 01.03.05 11:55
Delphi-Quelltext
1: 2: 3: 4: 5:
| if odd(Zahl) then ShowMessage('Ungerade') else ShowMessage('Gerade'); |
Spaceguide - Di 01.03.05 15:06
Delphi-Quelltext
1: 2: 3: 4: 5:
| if Zahl and 1=1 then ShowMessage('Ungerade') else ShowMessage('Gerade'); |
So, hamma alles? :)
uall@ogc - Di 01.03.05 15:19
Delphi-Quelltext
1: 2: 3: 4: 5:
| if boolean(zahl and 1) then ShowMessage('Ungerade') else ShowMessage('Gerade'); |
würde ich eher nehmen wenn des mit and machst ;>
uall@ogc - Di 01.03.05 15:31
Delphi-Quelltext
1: 2: 3:
| if boolean((zahl shl 31) shr 31) then 'ungerade' else 'gerade' |
noch ne möglichkeit ;>
retnyg - Di 01.03.05 15:33
wie kommst du auf 31 ?
edit: lol...habs gecheckt ;)
Spaceguide - Di 01.03.05 15:43
Hier ganz besonders elegant:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function IsEven(i : integer) : boolean; var s : string; c : char; begin s := IntToStr(i); c := s[Length(s)]; Result := (c='0') or (c='2') or (c='4') or (c='6') or (c='8'); end; |
uall@ogc - Di 01.03.05 15:54
wenn wa jetzt schon mit langsamen methoden ankommen.
Delphi-Quelltext
1: 2: 3: 4: 5:
| function gerade(i: integer): boolean; begin while i >= 1 do dec(i,2); result := boolean(i+1); end; |
oder rekursiv
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| function gerade(i: integer): integer; begin if i >= 1 then result := gerade(i-2) else result := i+1; end; |
Harry Hunt - Di 01.03.05 16:02
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| function Gerade(Zahl: Integer): Boolean; var Zahlen: array[0..High(Integer)] of Boolean; I: Integer; begin for I := 1 to (High(Integer) div 2) do Zahlen[I * 2] := True; Result := Zahlen[abs(Zahl)]; end; |
:lol:
EDIT: Mist, das lässt sich noch nicht mal kompilieren...
Spaceguide - Di 01.03.05 17:04
Kann noch jemand mit Fliesskommazahlen kommen?
Delphi-Quelltext
1: 2: 3: 4:
| function IsOdd(i : integer) : boolean; register; ASM AND EAX,1 end; |
Spaceguide - Di 01.03.05 17:08
Oder hier noch eine schöne Variante, ausgehend von der Annahme, dass Null eine gerade Zahl ist:
Delphi-Quelltext
1: 2: 3: 4: 5:
| function IsEven(i : integer) : boolean; begin if i=0 then Result:=true else Result := not IsEven(Pred(i)); end; |
F34r0fTh3D4rk - Di 01.03.05 18:21
wird das hier ein kampf der codes, man kanns auch echt übertreiben :D
ich glaube
ist alles was er wissen wollte :mrgreen:
Delete - Di 01.03.05 18:55
und wer hatte diesen geistesblitz? :wink:
Spaceguide - Di 01.03.05 19:22
Ist doch lustig. Auf so Fragen wie "gerade und ungerade Zahlen unterscheiden", "wie addiere ich zwei Zahlen" bietet sich doch gerade so eine Parodie an.
delfiphan - Di 01.03.05 21:54
Leute, ich will doch auch mal! :)
Wenn ich mich nicht täsche kann man nicht beweisen, dass das hier funktioniert, ausser man probiert alle möglichen Zahlen einfach durch:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| function ungerade(const I : Integer) : Boolean; Var J, A : Integer; begin A := random(abs(I))+1; while A >= 2 do begin B := random(A) and not 1; For J := 0 to abs(A) do B := B xor (2*random(random(J))+1); if arccos(cos(B*pi)) > pi/2 then A := A div 2 else A := A*3+1; end; Result := I = A or I and -2; end; |
Der Thread wird bestimmt bald gelockt...
AXMD - Di 01.03.05 22:45
Kommt schon Leute, wir wollen's nicht übertreiben. Seine Frage ist beantwortet - auch ohne ominöse Funktionen die den Arcuscosinus vom Cosinus berechnen...
AXMD
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!