#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a; // liczba, z której liczymy pierwiastek
double left = 1.0; // lewy kraniec przedziału
double right;
double mid;
double eps = 1e-6;
cout << "Podaj liczbe rzeczywista > 1: ";
cin >> a;
if (a <= 1)
{
cout << "Liczba musi byc > 1!" << endl;
return 1;
}
right = a;
// Metoda bisekcji
while ((right - left) > eps)
{
mid = (left + right) / 2.0;
if (mid * mid > a)
right = mid;
else
left = mid;
}
mid = (left + right) / 2.0;
cout << "Przyblizona wartosc sqrt(" << a << ") = " << mid << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgYTsgICAgICAgICAgLy8gbGljemJhLCB6IGt0w7NyZWogbGljenlteSBwaWVyd2lhc3RlawogICAgZG91YmxlIGxlZnQgPSAxLjA7IC8vIGxld3kga3JhbmllYyBwcnplZHppYcWCdQogICAgZG91YmxlIHJpZ2h0OwogICAgZG91YmxlIG1pZDsKICAgIGRvdWJsZSBlcHMgPSAxZS02OwoKICAgIGNvdXQgPDwgIlBvZGFqIGxpY3piZSByemVjenl3aXN0YSA+IDE6ICI7CiAgICBjaW4gPj4gYTsKCiAgICBpZiAoYSA8PSAxKQogICAgewogICAgICAgIGNvdXQgPDwgIkxpY3piYSBtdXNpIGJ5YyA+IDEhIiA8PCBlbmRsOwogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHJpZ2h0ID0gYTsKCiAgICAvLyBNZXRvZGEgYmlzZWtjamkKICAgIHdoaWxlICgocmlnaHQgLSBsZWZ0KSA+IGVwcykKICAgIHsKICAgICAgICBtaWQgPSAobGVmdCArIHJpZ2h0KSAvIDIuMDsKCiAgICAgICAgaWYgKG1pZCAqIG1pZCA+IGEpCiAgICAgICAgICAgIHJpZ2h0ID0gbWlkOwogICAgICAgIGVsc2UKICAgICAgICAgICAgbGVmdCA9IG1pZDsKICAgIH0KCiAgICBtaWQgPSAobGVmdCArIHJpZ2h0KSAvIDIuMDsKCiAgICBjb3V0IDw8ICJQcnp5Ymxpem9uYSB3YXJ0b3NjIHNxcnQoIiA8PCBhIDw8ICIpID0gIiA8PCBtaWQgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=