Potęgowanie i pierwiastkowanie za pomocą pętli for

0

Mam pytanie, mianowicie, jak potęgować i pierwiastkować liczby (nawet bardzo duże) za pomocą pętli

 for 

?
I jeszcze jedno - czy zmienne można oznaczyć jako Real [???]

0
x:Real

zmienna liczbowa, zakres - liczby rzeczywiste ( oczywiście jest limit =) )

for i:=1 to n do
  x:=Sqr(x); albo x:=x*x; a raczej a:=a*x;
for i:=1 to n do
  x:=Sqrt(x);

pasi ? =D

Edit
łaaaj =D co ja za potęgowanie zrobiłem =D

0

Potwoor_ ;-( rozbroiłeś mnie

program Pierwiastkowanie ;

{$APPTYPE CONSOLE}

function SqrtIter(X:real; n : integer) : real;
var
a :real;
i:integer;
begin
a:=X;
for i := 0 to n do
a:= (a+(X/a))/2;
result :=a;
end;

begin
writeln(SqrtIter(9,1000):2:10);
readln;
end.

X - liczba pierwiastkowana,
n - liczba kroków iteracji (im wyższa tym dokładniejszy pierwiastek).

0

Przy okazji:
gdybym chciał użyć typu Extended to jak napisać, tam, gdzie np. dla Real jest:

 StrToFloat 

albo:

FloatToStr

[???]

0

buaahh =D ale błąd walnąłem =D wstyyydd... chyba zrobię sobie nowe konto =D

na usprawiedliwienie mam to że przy kompie byłem "przelotem" =]

0

lepiej jest użyć potęgowania opisanego http://pl.wikipedia.org/wiki/Algorytm_szybkiego_pot%C4%99gowania wtedy zyskujemy na czasie

0

No, a jeśli ostatecznie nie musi być jednak pętli to:

function Potega(X, Y:Extended):Extended;
begin
result:=exp(ln(X)*Y);
end;

function Pierwiastek(X, Y:Extended):Extended;
begin
result:=exp(ln(X)/Y);
end;

..lub wprost Power. To oczywiście tylko tak wspominam przy okazji.

0

Przy okazji:
Chcę zrobić tak, żeby program podzielił wszystkie liczby, od 1 do X. Czy da to się zrobić za pomocą pętli for, tak jak dodawanie wszystkich liczb od 0 do X:

procedure Tkalk.Button1Click(Sender: TObject);
var
a1, an, N, Y, X : Extended;
begin
Y := StrToFloat(Edit5.Text);
a1 := 0;
an := Y;
N := Y + 1;
X := (a1 + an) * N / 2;
Label6.Caption := FloatToStr(X);
end;

albo tak jak silnię:

function silnia(n:word):Real;
begin
if (n=0)or(n=1) then silnia:=1 else
silnia:=n*silnia(n-1);
end;

procedure Tkalk.Button3Click(Sender: TObject);
begin
Label10.Caption:=FloatToStr(silnia(StrToInt(Edit8.text)));
end;

Jeżeli macie jakieś pomysły, przedstawcie je (jeżeli możenie to z wyjaśnieniami, bo tego z silnią [mnożenia wszystkich liczb od 1 do X] nie rozumiem).

Z góry dziękuję

1 użytkowników online, w tym zalogowanych: 0, gości: 1