Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi [Erledigt]Zahl Gerade? (https://www.delphipraxis.net/40041-%5Berledigt%5Dzahl-gerade.html)

Maximus 10. Feb 2005 10:19


[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:
function Gerade(Zahl: Integer) : Boolean;
begin
 Result := true;
 if Zahl mod 2 = 5 then Result := false;
end;
Doch leider gab er mir hier immer True zurück. Jedoch funktionier folgender Code:
Delphi-Quellcode:
function Gerade(Zahl: Integer) : Boolean;
begin
 Result := true;
 if Zahl mod 2 <> 0 then Result := false;
end;
Woran liegt das?

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

BenjaminH 10. Feb 2005 10:23

Re: Zahl Gerade?
 
Eine Zahl modulo 2 ergibt immer eine Zahl kleiner 2, also nie 5

Manne 10. Feb 2005 10:24

Re: Zahl Gerade?
 
Mit
Delphi-Quellcode:
odd
bekommst du heraus, ob die Zahl ungerade ist.

SubData 10. Feb 2005 10:25

Re: Zahl Gerade?
 
Delphi-Quellcode:
if Zahl mod 2 = 1 then Result := false;
So müsste es funktionieren... (Nich getestet -g-)

Edit: 0.5 is quatsch... Mod rechnet ja den Rest-Wert aus :wall:

Torpedo 10. Feb 2005 10:26

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)

czapie 10. Feb 2005 10:27

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:
...
if Zahl mod 2 = 0 then return true; //Zahl ist gerade
...
Oder hab ich dich falsch verstanden?

alcaeus 10. Feb 2005 10:27

Re: Zahl Gerade?
 
mod gibt dir nur den Rest bei der Division zurück, also nix mit Kommazahlen.

Delphi-Quellcode:
Ungerade := Zahl mod 2 = 1;
Oder auch
Delphi-Quellcode:
Ungerade := Frac(Zahl div 2) = 0.5;
Der schnellste (und einfachste Weg) geht aber über Odd...

Greetz
alcaeus

Maximus 10. Feb 2005 10:29

Re: Zahl Gerade?
 
Zitat:

Zitat von Torpedo
Mod gibt nicht die Ziffern hinter dem Komma zurück, sondern den Rest.

Genau das wars ... ich habe bisher gedacht er gibt mir die Ziffern hinterm Komma zurück ...

Danke an alle

MFG
Maximus

Tyrael Y. 10. Feb 2005 10:29

Re: Zahl Gerade?
 
Vergleich mal das in Ruhe mit deiner Funktion..

Delphi-Quellcode:
function Gerade(Zahl: Integer) : Boolean;
begin
 result := Zahl mod 2 = 0;
end;
Edit: ..war zu langsam


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:54 Uhr.

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