Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zahl gerade oder ungerade? (https://www.delphipraxis.net/38069-zahl-gerade-oder-ungerade.html)

JSB 14. Jan 2005 11:05


Zahl gerade oder ungerade?
 
Gibt es die Möglichkeit abzufragen ob eine Zahl gerade/ungerade ist, oder ob diese durch 2 teilbar ist und wenn Sie teilbar/gerade ist einen Boolischen Wert zu bekommen?
(Teilbar/gerade = True; NichtTeilbar/Ungerade = False;) :gruebel:

kiar 14. Jan 2005 11:06

Re: Zahl gerade oder ungerade?
 
Delphi-Quellcode:
odd(i)
raik

alcaeus 14. Jan 2005 11:07

Re: Zahl gerade oder ungerade?
 
Delphi-Quellcode:
function IsGerade(Zahl: Integer): Boolean;
begin
  Result := Zahl mod 2 = 0;
end;
So, und weil mir der Gedankenblitz erst nach dem Tippen des Codes gekommen ist: Delphi-Referenz durchsuchenOdd

Greetz
alcaeus

Nothine 14. Jan 2005 11:37

Re: Zahl gerade oder ungerade?
 
und wenn man sich den binären aufbau der zahlen anschaut kann man sich das mod auch sparen und etwas in der richtung schreiben:
Delphi-Quellcode:
function Gerade(const I: Integer): Boolean;
begin
  Result := I and 1 = 0;
end;
edit: und am rande bemerkt, odd gibt zurück ob die zahl UNgerade ist, ich glaub das war nich ganz die frage :roll: :mrgreen:

hboy 14. Jan 2005 11:52

Re: Zahl gerade oder ungerade?
 
Delphi-Quellcode:
function ungerade(const I: Integer): Boolean;
begin
  Result := Boolean(I and 1);
end;

immer diese tags !

sakura 14. Jan 2005 11:53

Re: Zahl gerade oder ungerade?
 
@HBoy: Sei mal so gut und nutze die [delphi] Tags.

...:cat:...

Stevie 14. Jan 2005 11:58

Re: Zahl gerade oder ungerade?
 
[senfmode]Die Funktion Odd ist CompilerMagic, deshalb wird sie wohl schneller sein, als alle selbst gebauten... ;-)[/senfmode]

Nothine 14. Jan 2005 12:29

Re: Zahl gerade oder ungerade?
 
Zitat:

Zitat von Stevie
[senfmode]Die Funktion Odd ist CompilerMagic, deshalb wird sie wohl schneller sein, als alle selbst gebauten... ;-)[/senfmode]

[klugscheiß]
nich unbedingt, als funktion ist Odd nix anderes als
Delphi-Quellcode:
function Odd(X: Longint): Boolean;
asm
  AND EAX,$01 // AND AL,$01 würde sogar schon reichen
end;
und bei z.B. if Odd(Variable) then halt
Delphi-Quellcode:
...
  TEST {Register or Memory},$01
  J{bedingung} //oder SET{bedingung}, je nach verwendung
also ich glaub das kann man auch noch selber so schnell nachbauen wie der compiler :roll:
[/klugscheiß]
das musste jetz sein :mrgreen:

JSB 14. Jan 2005 12:50

Re: Zahl gerade oder ungerade?
 
Bin erst im 1.Lehrjahr...

Was sind:
Zitat:

Zitat von sakura
[delphi] Tags.

PS:
if (Durchlauf > 1) and ( if (Odd(Durchlauf)) = False) then


funktioniert nicht....

sakura 14. Jan 2005 12:57

Re: Zahl gerade oder ungerade?
 
Zitat:

Zitat von Nothine
[klugscheiß]
nich unbedingt, als funktion ist Odd nix anderes als
Delphi-Quellcode:
function Odd(X: Longint): Boolean;
asm
  AND EAX,$01 // AND AL,$01 würde sogar schon reichen
end;

Jetzt muss ich Deinen Modus überlaufen. Denn Du weißt nicht was "Compilermagic" bedeutet ;-) Bei Deinen eigenen Funktionen kommt immer ein Overhead (Funktionsaufruf und Rücksprung) dazu. Bei Odd nicht, da diese direkt eingesetzt wird ohne den Stack zu belasten. Damit ist Odd immer schneller ;-)

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:36 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz