#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a; // liczba dodatnia
double x; // przybliżenie
double eps = 1e-6;
cout << "Podaj dodatnia liczbe rzeczywista: ";
cin >> a;
if (a <= 0)
{
cout << "Liczba musi byc dodatnia!" << endl;
return 1;
}
// Przybliżenie początkowe
x = a;
// Iteracje Newtona-Raphsona
while (fabs(x * x - a) > eps)
{
x = 0.5 * (x + a / x);
}
cout << "Przyblizona wartosc sqrt(" << a << ") = " << x << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgYTsgICAgICAgICAgLy8gbGljemJhIGRvZGF0bmlhCiAgICBkb3VibGUgeDsgICAgICAgICAgLy8gcHJ6eWJsacW8ZW5pZQogICAgZG91YmxlIGVwcyA9IDFlLTY7CgogICAgY291dCA8PCAiUG9kYWogZG9kYXRuaWEgbGljemJlIHJ6ZWN6eXdpc3RhOiAiOwogICAgY2luID4+IGE7CgogICAgaWYgKGEgPD0gMCkKICAgIHsKICAgICAgICBjb3V0IDw8ICJMaWN6YmEgbXVzaSBieWMgZG9kYXRuaWEhIiA8PCBlbmRsOwogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIC8vIFByenlibGnFvGVuaWUgcG9jesSFdGtvd2UKICAgIHggPSBhOwoKICAgIC8vIEl0ZXJhY2plIE5ld3RvbmEtUmFwaHNvbmEKICAgIHdoaWxlIChmYWJzKHggKiB4IC0gYSkgPiBlcHMpCiAgICB7CiAgICAgICAgeCA9IDAuNSAqICh4ICsgYSAvIHgpOwogICAgfQoKICAgIGNvdXQgPDwgIlByenlibGl6b25hIHdhcnRvc2Mgc3FydCgiIDw8IGEgPDwgIikgPSAiIDw8IHggPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=