![]() |
[Erledigt]Zahl Gerade?
Hallo,
Ich brauch in meinem Programm eine Funktion die mir sagt ob die zu überprüfende Zahl (zwischen 1 und 16) gerade oder nicht ist. Also hab ich das so gelöst:
Delphi-Quellcode:
Doch leider gab er mir hier immer True zurück. Jedoch funktionier folgender Code:
function Gerade(Zahl: Integer) : Boolean;
begin Result := true; if Zahl mod 2 = 5 then Result := false; end;
Delphi-Quellcode:
Woran liegt das?
function Gerade(Zahl: Integer) : Boolean;
begin Result := true; if Zahl mod 2 <> 0 then Result := false; end; Ich dachte immer eine Ganze ungerade Zahl durch zwei ergibt x,5 und da mod ja das hinter dem Komma nur gibt müsst doch die obere Funktion auch funktionier, oder hab ich in der Schule nicht aufgepasst? //Edit: Stanlay Hanks und der Asche Vogel haben mir es gerade freundlicherweise im Chat erklärt :) Danke! MFG Maximus |
Re: Zahl Gerade?
Eine Zahl modulo 2 ergibt immer eine Zahl kleiner 2, also nie 5
|
Re: Zahl Gerade?
Mit
Delphi-Quellcode:
bekommst du heraus, ob die Zahl ungerade ist.
odd
|
Re: Zahl Gerade?
Delphi-Quellcode:
So müsste es funktionieren... (Nich getestet -g-)
if Zahl mod 2 = 1 then Result := false;
Edit: 0.5 is quatsch... Mod rechnet ja den Rest-Wert aus :wall: |
Re: Zahl Gerade?
Mod gibt nicht die Ziffern hinter dem Komma zurück, sondern den Rest.
Beispiel: 13 div 2 = 6 6*2 = 12 also ist der Rest 1 (13-12) |
Re: Zahl Gerade?
na überprüf eben erst ob die Zahl im Rahmen liegt also größergleich 1 und kleinergleich 16
und dann
Delphi-Quellcode:
Oder hab ich dich falsch verstanden?
...
if Zahl mod 2 = 0 then return true; //Zahl ist gerade ... |
Re: Zahl Gerade?
mod gibt dir nur den Rest bei der Division zurück, also nix mit Kommazahlen.
Delphi-Quellcode:
Oder auch
Ungerade := Zahl mod 2 = 1;
Delphi-Quellcode:
Der schnellste (und einfachste Weg) geht aber über Odd...
Ungerade := Frac(Zahl div 2) = 0.5;
Greetz alcaeus |
Re: Zahl Gerade?
Zitat:
Danke an alle MFG Maximus |
Re: Zahl Gerade?
Vergleich mal das in Ruhe mit deiner Funktion..
Delphi-Quellcode:
Edit: ..war zu langsam
function Gerade(Zahl: Integer) : Boolean;
begin result := Zahl mod 2 = 0; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz