AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Potenzberechnung mit Delphi

Ein Thema von Optiplex · begonnen am 1. Sep 2009 · letzter Beitrag vom 1. Sep 2009
Antwort Antwort
Seite 1 von 2  1 2      
Optiplex

Registriert seit: 5. Mär 2008
131 Beiträge
 
Delphi 2005 Personal
 
#1

Potenzberechnung mit Delphi

  Alt 1. Sep 2009, 07:10
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
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Potenzberechnung mit Delphi

  Alt 1. Sep 2009, 07:29
Power(2, 3) gibt bei mir 8.

Wie hast Du die Funktion angewendet?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Potenzberechnung mit Delphi

  Alt 1. Sep 2009, 07:37
Zitat:
bitte keine Antwort darauf
OK, ich sag nix *zustimmendnick*

Delphi-Quellcode:
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;
$2B or not $2B
  Mit Zitat antworten Zitat
BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Potenzberechnung mit Delphi

  Alt 1. Sep 2009, 08:01
Ansonsten kann man sich das ja auch schön in einer kleinen rekursiven Funktion selber bauen.

Delphi-Quellcode:
function TForm1.Hoch(iBasis: Integer; iHoch: Integer) : integer;
begin
  if iHoch > 1 then result := iBasis * Hoch(iBasis, iHoch-1)
  else result := iBasis;
end;
Natürlich sollte man noch den Sonderfall z.B.("Hoch NULL")abfangen werden, dann sieht das ungefair so aus:

Delphi-Quellcode:
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;
Ist mal schnell geschrieben, hoffe hat sich kein Fehler eingeschlichen.

MfG
BAMatze

Edit: Es wurde dabei auch von ganzzahligen Potenzen ausgegangen. Für reale Potenzen sollte auch der Algorithmus angepasst werden.
2. Account Sero
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: Potenzberechnung mit Delphi

  Alt 1. Sep 2009, 08:32
Igitt Rekursion

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;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
fajac

Registriert seit: 1. Jul 2009
60 Beiträge
 
#6

Re: Potenzberechnung mit Delphi

  Alt 1. Sep 2009, 09:16
Delphi-Quellcode:
function Hoch (ABasis, AExponent : Integer) : Integer;
begin
  result := Trunc (exp(AExponent * ln(ABasis)));
end;
  Mit Zitat antworten Zitat
Optiplex

Registriert seit: 5. Mär 2008
131 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Potenzberechnung mit Delphi

  Alt 1. Sep 2009, 09:20
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 von Satty67:
Power(2, 3) gibt bei mir 8.

Wie hast Du die Funktion angewendet?
Na, wie man eine Funktion so anwendet
Delphi-Quellcode:
procedure Irgendwas;
var Ergebnis:real;
begin
  Ergebnis:=Power(2,3);
end;
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?

Gruß Dieter
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Potenzberechnung mit Delphi

  Alt 1. Sep 2009, 09:23
Eventuell weill Du einen falschen Datentyp für das Ergebniss verwendest?
Versuche mal anstelle von real einen Integertype (int, cardinal),
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Optiplex

Registriert seit: 5. Mär 2008
131 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Potenzberechnung mit Delphi

  Alt 1. Sep 2009, 09:28
Hallo Sharky,
Zitat von Sharky:
Eventuell weill Du einen falschen Datentyp für das Ergebniss verwendest?
Versuche mal anstelle von real einen Integertype (int, cardinal),
Laut Hilfe ist der Datentyp Extended was einem Real-Wert entspricht

Gruß Dieter
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

Re: Potenzberechnung mit Delphi

  Alt 1. Sep 2009, 09:30
Zitat:
Delphi-Quellcode:
procedure Irgendwas;
var Ergebnis:real;
begin
  Ergebnis:=Power(2,3);
end;
Ergebnis wird nicht verwendet und daher vom Compiler entfernt ... heißt, die Variable gibt es nach der Zuweisung vermutlich nicht mehr (Codeoptimierungen halt) und der Debugger ließt was "Falsches" aus

wenn schon "sinnlose" Funktionen, dann bitte die ungenutzte Variable auch wenigstens noch mal umsonst verwenden
Delphi-Quellcode:
procedure Irgendwas;
var Ergebnis: real;
begin
  Ergebnis := Power(2, 3);
  if Ergebnis = 8 then ;
end;
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 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