#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double c;
double a, b, m;
double eps = 1e-8;
int iter = 0;
int maxIter = 1000;
cout << "Podaj liczbe c > 1: ";
cin >> c;
if (c <= 1)
{
cout << "Blad: c musi byc > 1" << endl;
return 1;
}
// Przedzial poczatkowy
a = 1.0;
b = c;
// Metoda bisekcji
do
{
m = (a + b) / 2.0;
if (m * m > c)
b = m;
else
a = m;
iter++;
} while (fabs(m * m - c) > eps && iter < maxIter);
cout << "Przyblizona wartosc sqrt(" << c << ") = " << m << endl;
cout << "Liczba iteracji: " << iter << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgYzsKICAgIGRvdWJsZSBhLCBiLCBtOwogICAgZG91YmxlIGVwcyA9IDFlLTg7CiAgICBpbnQgaXRlciA9IDA7CiAgICBpbnQgbWF4SXRlciA9IDEwMDA7CgogICAgY291dCA8PCAiUG9kYWogbGljemJlIGMgPiAxOiAiOwogICAgY2luID4+IGM7CgogICAgaWYgKGMgPD0gMSkKICAgIHsKICAgICAgICBjb3V0IDw8ICJCbGFkOiBjIG11c2kgYnljID4gMSIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAvLyBQcnplZHppYWwgcG9jemF0a293eQogICAgYSA9IDEuMDsKICAgIGIgPSBjOwoKICAgIC8vIE1ldG9kYSBiaXNla2NqaQogICAgZG8KICAgIHsKICAgICAgICBtID0gKGEgKyBiKSAvIDIuMDsKCiAgICAgICAgaWYgKG0gKiBtID4gYykKICAgICAgICAgICAgYiA9IG07CiAgICAgICAgZWxzZQogICAgICAgICAgICBhID0gbTsKCiAgICAgICAgaXRlcisrOwoKICAgIH0gd2hpbGUgKGZhYnMobSAqIG0gLSBjKSA+IGVwcyAmJiBpdGVyIDwgbWF4SXRlcik7CgogICAgY291dCA8PCAiUHJ6eWJsaXpvbmEgd2FydG9zYyBzcXJ0KCIgPDwgYyA8PCAiKSA9ICIgPDwgbSA8PCBlbmRsOwogICAgY291dCA8PCAiTGljemJhIGl0ZXJhY2ppOiAiIDw8IGl0ZXIgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=