Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Hochzahl ? (https://www.delphipraxis.net/47408-hochzahl.html)

Clane 10. Jun 2005 16:28


Hochzahl ?
 
also ich möchte eine hochzahl ein einen rechner einabuen der z.b mit den werten a und x die formel erstellt wenn x gleich 4 ist ...

a*a*a*a aber das is mir so zu umständlich gibts da einen befehl wie + - * / für ??

MfG. PBiggi

Oxmyx 10. Jun 2005 16:31

Re: Hochzahl ?
 
Sechzehn := Power(2, 4);

Neotracer64 10. Jun 2005 16:33

Re: Hochzahl ?
 
Delphi-Quellcode:
uses Math;

var
x,a: Integer;
begin
x:=2;
a:=4;
Power(x,a);
end;

Clane 10. Jun 2005 16:33

Re: Hochzahl ?
 
danke für euren schnellen antworten

Clane 10. Jun 2005 16:35

Re: Hochzahl ?
 
wäre die formel so dann richig .. ich mein die exponential funktion y = b*a(hoch)x

Delphi-Quellcode:
Edit1 := b * a * Power(x,a);

glkgereon 10. Jun 2005 16:36

Re: Hochzahl ?
 
Delphi-Quellcode:
FloatToStr();
//daher
Edit1 := FloatToStr(b * a * Power(x,a));
warum noch a mal?

;)

Clane 10. Jun 2005 16:39

Re: Hochzahl ?
 
dangöö

dizzy 10. Jun 2005 16:56

Re: Hochzahl ?
 
Power(x, a) ist x^a. a^x wäre Power(a, x).

marabu 10. Jun 2005 17:03

Re: Hochzahl ?
 
Hallo PBiggi,

solange du wieder mal deine Math-Unit suchst kannst du das hier benutzen:

Delphi-Quellcode:
function Power(base: integer; exponent: byte): Int64;
begin
  if exponent = 0 then Result := 1
  else begin
    Result := Power(base, exponent shr 1);
    Result := Result * Result;
    if Odd(exponent) then
      Result := Result * base;
  end;
end;
Freundliche Grüße vom marabu

Dax 10. Jun 2005 17:09

Re: Hochzahl ?
 
Warum nicht einfach so?
Delphi-Quellcode:
function MyPow(Base, Exponent: Integer): Int64;
begin
  Result := Round(Exp(Exponent * Ln(Base)));
end;

dizzy 10. Jun 2005 17:41

Re: Hochzahl ?
 
Weil das nahezu identisch mit der Funktion "Power" ist (bei gebrochenen Exponenten) ;)

marabu 10. Jun 2005 18:57

Re: Hochzahl ?
 
Hallo Dax,

Zitat:

Zitat von Dax
Warum nicht einfach so?
Delphi-Quellcode:
function MyPow(Base, Exponent: Integer): Int64;
begin
  Result := Round(Exp(Exponent * Ln(Base)));
end;

das ist generell in Ordnung. Der Vorteil der Integer-Arithmetik fällt nicht so groß aus, wie ich dachte und für große Exponenten muss ich sogar die Rekursion ausbauen, damit ich mithalten kann. Ich wusste gar nicht, dass Exp() und Ln() zur Grundausrüstung gehören.

Für alle die es interessiert:

100.000.000 Zyklen 5 hoch 10: mypow 21s rekursiv 20s nonrek 18s

negative Basen gehen mit MyPow nicht.

Grüße vom marabu

Dax 10. Jun 2005 19:47

Re: Hochzahl ?
 
Okay, so gehts mit negativen Basen ;)
Delphi-Quellcode:
function MyPow(Base, Exponent: Integer): Int64;
var i: Integer;
begin
  i := 1 - 2 * (Base shr (sizeof(Base)-1));
  Result := i*Round(Exp(Exponent * Ln(i*Base)));
end;

Clane 11. Jun 2005 09:21

Re: Hochzahl ?
 
Zitat:

Zitat von marabu
Hallo PBiggi,

solange du wieder mal deine Math-Unit suchst kannst du das hier benutzen:

Delphi-Quellcode:
function Power(base: integer; exponent: byte): Int64;
begin
  if exponent = 0 then Result := 1
  else begin
    Result := Power(base, exponent shr 1);
    Result := Result * Result;
    if Odd(exponent) then
      Result := Result * base;
  end;
end;
Freundliche Grüße vom marabu

joa doch ... deshalb ging das nich ... pe hat math ja nich -.- naja mit deinen src geht auch ;)

aber ich hab mal noch ne frage ... y=b*a(hoch)x wie kann ich die formel nach a auflösen ?? also aufm papier ?? ich bekomm das nich hin mit dem hoch x

edit: bzw wie zieh ich die x-te wurzel in delhi ?? weil die formel is ja eigentlich a = ((x-te wurzel)y/a)

malo 11. Jun 2005 09:25

Re: Hochzahl ?
 
Zitat:

Zitat von PBiggi
joa doch ... deshalb ging das nich ... pe hat math ja nich -.-

:shock:

Ich empfehle dir eine Neuinstallation von Delphi, wenn du keine Math-Unit hast :gruebel:

Clane 11. Jun 2005 09:26

Re: Hochzahl ?
 
ne ich hab 7 und 2k5 personal und in denn is math nich drin

malo 11. Jun 2005 09:32

Re: Hochzahl ?
 
Zitat:

Zitat von PBiggi
ne ich hab 7 und 2k5 personal und in denn is math nich drin

Wie gesagt: Neuinstalltion. Ich hab in beiden die Unit Math und vollen Zugriff auf die Funktionen der Unit ;)

Sowohl mit Delphi 7 Personal als auch mti Delphi 2005 Personal.

Khabarakh 11. Jun 2005 09:46

Re: Hochzahl ?
 
Zur x-ten Wurzel: Das sollte doch
Delphi-Quellcode:
a := (y / b, 1 / x);
sein?

dizzy 11. Jun 2005 14:35

Re: Hochzahl ?
 
n-te Wurzel(x) = power(x, 1/n)


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