![]() |
Potenzberechnung mit Delphi
Moin zusammen.
Ich bin mal wieder zu blöd (bitte keine Antwort darauf). Ich suche eine Funktion mit der ich X hoch Y berechnen kann. X u. Y sind beides Integer Werte. Also was ich berechnen möchte ist z.B. 2 hoch 3 = 8, leider finde ich in Delphi keine Funktion dafür. Habe schon die Funktionen Power und IntPower getestet komme aber nicht auf den Ergebniswert 8. Kann mir jemand sagen wie man eine solche Gleichung mit Delphi lösen kann. Danke und Gruß Dieter |
Re: Potenzberechnung mit Delphi
Power(2, 3) gibt bei mir 8.
Wie hast Du die Funktion angewendet? |
Re: Potenzberechnung mit Delphi
Zitat:
Delphi-Quellcode:
:stupid:
Function MySlowPower(i, e: Integer): Integer;
Begin If e < 0 Then Raise Exception.Create('der Exponent ist mir zu klein'); Result := 1; While e > 0 do Begin Result := Result * i; Dec(e); End; End; |
Re: Potenzberechnung mit Delphi
Ansonsten kann man sich das ja auch schön in einer kleinen rekursiven Funktion selber bauen.
Delphi-Quellcode:
Natürlich sollte man noch den Sonderfall z.B.("Hoch NULL")abfangen werden, dann sieht das ungefair so aus:
function TForm1.Hoch(iBasis: Integer; iHoch: Integer) : integer;
begin if iHoch > 1 then result := iBasis * Hoch(iBasis, iHoch-1) else result := iBasis; end;
Delphi-Quellcode:
Ist mal schnell geschrieben, hoffe hat sich kein Fehler eingeschlichen.
function TForm1.Hoch(iBasis: Integer; iHoch: Integer) : double;
begin if iHoch = 0 then result := 1 else begin if iHoch >0 then begin if iHoch > 1 then result := iBasis * Hoch(iBasis, iHoch-1) else result := iBasis; end else begin if iHoch < -1 then result := 1/iBasis * Hoch(iBasis, iHoch+1) else result := 1/iBasis; end; end; end; MfG BAMatze Edit: Es wurde dabei auch von ganzzahligen Potenzen ausgegangen. Für reale Potenzen sollte auch der Algorithmus angepasst werden. |
Re: Potenzberechnung mit Delphi
Igitt Rekursion :shock: :lol:
Delphi-Quellcode:
function Power(x, y: Integer): Double;
var i: Integer; begin Result := 1; if y >= 0 then begin for i := 1 to y do begin Result := Result * x; end; end else begin for i := -1 downto y do begin Result := Result / x; end; end; end; |
Re: Potenzberechnung mit Delphi
Delphi-Quellcode:
function Hoch (ABasis, AExponent : Integer) : Integer;
begin result := Trunc (exp(AExponent * ln(ABasis))); end; |
Re: Potenzberechnung mit Delphi
Erstmal danke an alle für die klasse Antworten, besonderst möchte ich denen Danken die sich gleich die Mühe gemacht haben eine eigene Function zu schreiben. Wenn alle Stricke reißen werde ich eine von diesen Functionen benutzen. Was ich allerdings nicht verstehe ist, dass ich mit den Funktionen Power und IntPower aus der Unit Math nicht ans Ziel gekommen bin.
Zitat:
Delphi-Quellcode:
Im Ergebnis steht dann bei mir 3,653xxxxxxxe+3215 oder sowas aber nicht 8 und das ist was ich nicht verstehe, was mache ich falsch?
procedure Irgendwas;
var Ergebnis:real; begin Ergebnis:=Power(2,3); end; Gruß Dieter |
Re: Potenzberechnung mit Delphi
Eventuell weill Du einen falschen Datentyp für das Ergebniss verwendest?
Versuche mal anstelle von real einen Integertype (int, cardinal), |
Re: Potenzberechnung mit Delphi
Hallo Sharky,
Zitat:
Gruß Dieter |
Re: Potenzberechnung mit Delphi
Zitat:
wenn schon "sinnlose" Funktionen, dann bitte die ungenutzte Variable auch wenigstens noch mal umsonst verwenden :lol:
Delphi-Quellcode:
procedure Irgendwas;
var Ergebnis: real; begin Ergebnis := Power(2, 3); if Ergebnis = 8 then ; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 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