Przy liczbie podpierwiastkowej większej od ok 20 lub zmiennoprzecinkowej pętla powtarza się w nieskończoność
float potega(float a, int n) // a^n
{
float c = a;
for (int i = 1; i < n; i++)
{
a = a * c;
}
return a;
}
float pierwiastek(int a, int n) // n√a = b <==> b^n = a
{
float mb = (float)0.000001; // margines błędu
float b=0, c = 100, ass = 0; // c = przybliżenie ; ass == a
for (;;)
{
ass = potega(b, n);
if (a - mb <= ass && a + mb >= ass) return b;
if (ass > a - c && ass < a + c) c = c / 10;
else if (ass < a) b = b + c;
else if (ass > a) b = b - c;
}
}
PS. gdy podam do pierwiastka a = 4 i n = 2 to wynik jest dobry czyli 2 lecz jeżeli podam a = 25 i n = 2 to program się zacina