Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Fakultät (https://www.delphipraxis.net/149795-fakultaet.html)

Delphi Freak 30. Mär 2010 12:36


Fakultät
 
Hallo, ich habe ein Problem, ich möchte ein Programm schreiben, mit dem man die Fakultät von beliebigen Zahlen ausrechnen kann. Ich dachte eigetlich, dass ich es habe, aber irgendwas stimmt noch nicht, bis 12! tut alles, aber ab 13! kommt ein falsches Ergebnis raus. Hier mein Quelltext:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var x, z: Integer;
begin
  x := StrToInt(Edit1.Text);
  z := x;
if x = 0 then
begin
  Edit1.Text := '1';
end
else if x < 0 then
begin
  Edit1.Text := 'Ungültige Funktionseingabe!';
end
else if x = 1 then
begin
  Edit1.Text := '1';
end
else
begin
repeat
  z := z * (x-1);
  x := x-1;
until x = 1;
Edit1.Text := IntToStr(z);
end;
end;
Ich weiß einfach nicht, wo mein Fehler ist :(
Ich danke euch schon im voraus für eure Hilfe!

MfG
Florian

Luckie 30. Mär 2010 12:38

Re: Fakultät
 
Dann überleg doch mal, wie groß der Datentyp Integer ist und wie groß das Ergebnis von 13!.

Wolfgang Mix 30. Mär 2010 13:15

Re: Fakultät
 
Vielleicht hilft das hier

Delphi Freak 30. Mär 2010 15:41

Re: Fakultät
 
hihi, dummer Fehler!
Danke!

Mit Real kann ich am weitesten rechnen, oder? Weil Real macht dann ja auch noch mit E...

Klaus01 30. Mär 2010 15:48

Re: Fakultät
 
.. mit Float Werten bekommst Du ungenauigkeiten hinein, die könnten bei Fakultät
auch sichtbar werden.
Ich würde es mal mit Int64 versuchen.

Grüße
Klaus

Wolfgang Mix 30. Mär 2010 15:59

Re: Fakultät
 
Siehe Post #3

Matze 30. Mär 2010 16:21

Re: Fakultät
 
Und wenn's noch großer sein soll, erkundige dich mal nach Hier im Forum suchenTBigInt. Das sind spezielle Units wie beispielsweise diese, die dir eine Art Datentyp zu Verfügung stellen.

Edit: Die Unit funktioniert ab Delphi 2006 / TurboDelphi. Für dein Delphi 7 müsstest du dich nach einer anderen Unit umsehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 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