#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
// Funkcja, której pierwiastek chcemy znaleźć
double f(double x, double N) {
return x*x - N;
}
// Metoda bisekcji
double sqrt_bisekcja(double N, double tol=1e-6, int max_iter=100) {
if (N < 1) {
cout << "Liczba musi być większa od 1!" << endl;
return NAN;
}
double a = 1.0;
double b = N;
double c;
for (int i = 0; i < max_iter; i++) {
c = (a + b) / 2.0;
double fc = f(c, N);
if (fabs(fc) < tol) {
return c; // znaleziono pierwiastek
}
if (f(a, N) * fc < 0) {
b = c;
} else {
a = c;
}
}
return c; // zwróć przybliżony pierwiastek
}
int main() {
double N;
cout << "Podaj liczbe rzeczywista większa od 1: ";
cin >> N;
double wynik = sqrt_bisekcja(N);
if (!isnan(wynik)) {
cout << fixed << setprecision(6);
cout << "Przybliżona wartosc pierwiastka kwadratowego z " << N << " wynosi: " << wynik << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxpb21hbmlwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmtjamEsIGt0w7NyZWogcGllcndpYXN0ZWsgY2hjZW15IHpuYWxlxbrEhwpkb3VibGUgZihkb3VibGUgeCwgZG91YmxlIE4pIHsKICAgIHJldHVybiB4KnggLSBOOwp9CgovLyBNZXRvZGEgYmlzZWtjamkKZG91YmxlIHNxcnRfYmlzZWtjamEoZG91YmxlIE4sIGRvdWJsZSB0b2w9MWUtNiwgaW50IG1heF9pdGVyPTEwMCkgewogICAgaWYgKE4gPCAxKSB7CiAgICAgICAgY291dCA8PCAiTGljemJhIG11c2kgYnnEhyB3acSZa3N6YSBvZCAxISIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gTkFOOwogICAgfQoKICAgIGRvdWJsZSBhID0gMS4wOwogICAgZG91YmxlIGIgPSBOOwogICAgZG91YmxlIGM7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhfaXRlcjsgaSsrKSB7CiAgICAgICAgYyA9IChhICsgYikgLyAyLjA7CiAgICAgICAgZG91YmxlIGZjID0gZihjLCBOKTsKCiAgICAgICAgaWYgKGZhYnMoZmMpIDwgdG9sKSB7CiAgICAgICAgICAgIHJldHVybiBjOyAvLyB6bmFsZXppb25vIHBpZXJ3aWFzdGVrCiAgICAgICAgfQoKICAgICAgICBpZiAoZihhLCBOKSAqIGZjIDwgMCkgewogICAgICAgICAgICBiID0gYzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBhID0gYzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGM7IC8vIHp3csOzxIcgcHJ6eWJsacW8b255IHBpZXJ3aWFzdGVrCn0KCmludCBtYWluKCkgewogICAgZG91YmxlIE47CiAgICBjb3V0IDw8ICJQb2RhaiBsaWN6YmUgcnplY3p5d2lzdGEgd2nEmWtzemEgb2QgMTogIjsKICAgIGNpbiA+PiBOOwoKICAgIGRvdWJsZSB3eW5payA9IHNxcnRfYmlzZWtjamEoTik7CgogICAgaWYgKCFpc25hbih3eW5paykpIHsKICAgICAgICBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbig2KTsKICAgICAgICBjb3V0IDw8ICJQcnp5YmxpxbxvbmEgd2FydG9zYyBwaWVyd2lhc3RrYSBrd2FkcmF0b3dlZ28geiAiIDw8IE4gPDwgIiB3eW5vc2k6ICIgPDwgd3luaWsgPDwgZW5kbDsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=