![]() |
Fakultät berechnen
Ich wollte ein Programm schreiben bei dem man eine Zahl eingeben kann
und was dann auf Button druck die Fakultät berechnet bei nietregen Zahlen funktioniert es ganz gut, doch bei Zahlen über 70 bekomme ich nur ne Fehlermeldung von wegen „Gleitkommazahl“ kann mir jemand helfen hier ist der Quellcode.
Delphi-Quellcode:
[edit=alcaeus]Delphi-Tags eingefuegt. Spaet, aber doch... Mfg, alcaeus[/edit]
var
Form1: TForm1; n : integer; F : Double; k : Integer; implementation {$R *.DFM} procedure TForm1.Beenden1Click(Sender: TObject); begin close; end; function Fakult1(k : integer): Double; var i : Integer; a : Integer; begin result := 1; a := i; for a := 2 to k do result := a*result; end; function Fakult2(k : integer): Double; begin if k = 0 then Fakult2 := 1 else Fakult2 := k*Fakult2(k-1); end; procedure Fakult3(k: Integer; var f : double); begin if k=0 then f:=1 else begin Fakult3(k-1,f); f:=k*f; end; end; procedure TForm1.Button1Click(Sender: TObject); begin k := Spinedit1.Value; Fakult1(k); Fakult2(k); Fakult3(k,f); Edit1.Text := Floattostr(F); end; |
Re: Fakultät berechnen
Umklammer deinen Quelltext bitte zunächst mit
Delphi-Quellcode:
Danke!
und
MfG Florian :hi: |
Re: Fakultät berechnen
Wenn es denn hilft...
Delphi-Quellcode:
var
Form1: TForm1; n : integer; F : Double; k : Integer; implementation {$R *.DFM} procedure TForm1.Beenden1Click(Sender: TObject); begin close; end; function Fakult1(k : integer): Double; var i : Integer; a : Integer; begin result := 1; a := i; for a := 2 to k do result := a*result; end; function Fakult2(k : integer): Double; begin if k = 0 then Fakult2 := 1 else Fakult2 := k*Fakult2(k-1); end; procedure Fakult3(k: Integer; var f : double); begin if k=0 then f:=1 else begin Fakult3(k-1,f); f:=k*f; end; end; procedure TForm1.Button1Click(Sender: TObject); begin k := Spinedit1.Value; Fakult1(k); Fakult2(k); Fakult3(k,f); |
Re: Fakultät berechnen
Es hätte gereicht wenn du den ersten Beitrag editiert hättest... :roll:
MfG Florian :hi: |
Re: Fakultät berechnen
Die Fakultät von 70 ist eine 101-stellige Zahl.
Dann wird wohl dein Ergebnis einfach zu groß sein. |
Re: Fakultät berechnen
HiHo,
aus von flomei genanntem Grund habe ich mir die Berechnung deiner Fakultäten nicht auf Richtigkeit hin angesehen, aber beim Dechiffrieren des unformatierten Codes fiel mir auf, dass du
Mit vielen Grüßen (aus dem Krankenbett :cry: ) hanselmansel |
Re: Fakultät berechnen
Meint ihr echt es wäre zu groß...
Aber irgendwie muss es gehen mit dem Taschenrechner (unter Zubehör) geht es ja auch und das Ergebnis des Rechenaufwandes ist einfach faszinierend! Habt ihr mit ihm schon einmal 100000000 Fakultät (n!) gerechnet? |
Re: Fakultät berechnen
Zitat:
|
Re: Fakultät berechnen
Okey, Double geht bis irgendwas mit 10^300. 70! ist aber nur etwas größer als 10^100. Sollte also eigentlich passen. An dieser Stelle wäre also die genaue Fehlermeldung von Vorteil.
|
Re: Fakultät berechnen
Stimmt, Double kann einen Wert zwischen 5.0x10^-324 und 1.7x10^308 annehmen.
Aber wenns mit kleineren Zahlen funzt, wirds wohl in irgendeiner Weise an der größe der Zahl liegen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 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