Przerobienie z potęgowania na pierwiastkowanie

0

Witam.
Wie ktoś może jak przerobić ten oto program który liczy potęgi:

 #include <cstdlib>
#include <iostream>
 
using namespace std;
 
double poteguj(double podst, int wykl)
{
       double wynik;
 if (wykl !=0)
    {
    wynik = podst;      
    for (int i=1;i<wykl;i++)
    {
        wynik = wynik * podst;    
    }   
    }
    else
    {
    wynik = 1;       
    }        
    return wynik;
}
int main(int argc, char *argv[])
{
    double p;
    unsigned int w;
 
    cout << "Podaj podstawe ";
    cin >> p;
    getchar();
    cout << "Podaj wykladnik ";
    cin >> w;
    getchar();
    cout << "Wynik: " << poteguj(p,w)<<endl;    
    system("PAUSE");
    return EXIT_SUCCESS;
}
 

na program który liczy pierwiastek n-tego stopnia. ale nie korzystając z bibliotek jedynie przerobić ten program.
Z góry dzięki

1

Raczej przerobienie nie wchodzi w grę, chyba że ktoś się nudzi ;]
http://pl.wikipedia.org/wiki/Algorytm_obliczania_pierwiastka_n-tego_stopnia

1

Skorzystaj choćby z metody newtona :)

0

kurde;/ bo muszę taką pracę wykonać, dostałem podpowiedź że muszę zmienić funkcje i wiem że pierwiastek x-tego stopnia z y to to samo co y do potęgi 1/x. ale nie wiem co dalej

0

"Zmienić funkcję" jest pojęciem dość ogólnym, więc sugerowałbym coś takiego:

double nroot(double x, int n)
{
    if (n == 0)
        return 0.0 / 0.0; // NaN
    return exp(log(x * (1.0 / n));
}

Korzystamy tu z dwóch zależności:
x == elog(x)
log(xn) == n*log(x)

2

Ludzi napisał, że nie można stosować bibliotek nawet standardowych. Odpowiedź pierwsza jest najlepsza (druga ją powtarza, a wszystkie pozostałe są do d..py).

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