Delphiben hogyan lehet hatványozni?
2^x kéne beírni, ahol az x változik, (integer a meghatározása) de sehogy nem akarja elfogadni... Neten láttam, hogy erre a pow és power parancsokat használják, de valószínű valamit nem jól írok be, mivel nem akarja elfogadni. Tudnátok segíteni?
köszi
eredmeny:=1;
for i:=1 to x do eredmeny:=eredmeny*2;
Ez gyorsabb (bár több memóriát használ :P):
function hatv( ezt, ennyiedikre: longword ) : longword;
var x:longword;
begin
if ennyiedikre = 0 then result := 1
else
begin
x := hatv( ezt, ennyedikre div 2 );
x := x*x;
if odd(ennyedikre) then x := x*ezt;
result := x;
end;
end;
Egyszerű matematikai alapjai:
x^(n+1) = x^n * x^1
x^(2n) = (x^n)^2 = (x^n)(x^n)
Ha gyorsan, tetszőleges valós alap-kitevővel akarsz számolni:
function hatvany(alap, kitevo: Double): Double;
begin
hatvany:=exp(ln(alap)*kitevo);
end;
Ennél gyorsabb nem nagyon van. Pascalban biztos jó, remélem Delphiben is ezek a parancsok (exp, ln).
Mekkora az x?
Ha 63-nál kisebb, akkor elég egy "1 shl x"
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!