#include <iostream>
#include <cmath> // dla std::abs
#include <iomanip> // dla std::setprecision
double sqrtNewton(double x, double epsilon = 1e-6) {
if (x < 0) {
std::cerr << "Błąd: liczba ujemna!" << std::endl;
return -1;
}
if (x == 0) return 0;
double y = x;
while (true) {
double y_next = 0.5 * (y + x / y);
if (std::abs(y_next - y) < epsilon)
break;
y = y_next;
}
return y;
}
int main() {
double liczba = 15.0;
double epsilon = 0.001;
double wynik = sqrtNewton(liczba, epsilon);
// Ustawiamy 4 miejsca po przecinku
std::cout << std::fixed << std::setprecision(4);
std::cout << "Przybliżony pierwiastek kwadratowy z " << liczba
<< " wynosi: " << wynik << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+ICAgIC8vIGRsYSBzdGQ6OmFicwojaW5jbHVkZSA8aW9tYW5pcD4gIC8vIGRsYSBzdGQ6OnNldHByZWNpc2lvbgoKZG91YmxlIHNxcnROZXd0b24oZG91YmxlIHgsIGRvdWJsZSBlcHNpbG9uID0gMWUtNikgewogICAgaWYgKHggPCAwKSB7CiAgICAgICAgc3RkOjpjZXJyIDw8ICJCxYLEhWQ6IGxpY3piYSB1amVtbmEhIiA8PCBzdGQ6OmVuZGw7CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgaWYgKHggPT0gMCkgcmV0dXJuIDA7CgogICAgZG91YmxlIHkgPSB4OwogICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBkb3VibGUgeV9uZXh0ID0gMC41ICogKHkgKyB4IC8geSk7CiAgICAgICAgaWYgKHN0ZDo6YWJzKHlfbmV4dCAtIHkpIDwgZXBzaWxvbikKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgeSA9IHlfbmV4dDsKICAgIH0KICAgIHJldHVybiB5Owp9CgppbnQgbWFpbigpIHsKICAgIGRvdWJsZSBsaWN6YmEgPSAxNS4wOwogICAgZG91YmxlIGVwc2lsb24gPSAwLjAwMTsKCiAgICBkb3VibGUgd3luaWsgPSBzcXJ0TmV3dG9uKGxpY3piYSwgZXBzaWxvbik7CgogICAgLy8gVXN0YXdpYW15IDQgbWllanNjYSBwbyBwcnplY2lua3UKICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmZpeGVkIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKDQpOwogICAgc3RkOjpjb3V0IDw8ICJQcnp5YmxpxbxvbnkgcGllcndpYXN0ZWsga3dhZHJhdG93eSB6ICIgPDwgbGljemJhCiAgICAgICAgICAgICAgPDwgIiB3eW5vc2k6ICIgPDwgd3luaWsgPDwgc3RkOjplbmRsOwoKICAgIHJldHVybiAwOwp9Cg==