#include <iostream>
#include <cmath>
using namespace std;
// Definicja funkcji
double f(double x)
{
return x * x - 0.5;
}
int main()
{
double a = 0.0;
double b = 1.0;
double eps = 1e-6; // dokładność
double c;
if (f(a) * f(b) >= 0)
{
cout << "Brak zmiany znaku na przedziale!" << endl;
return 1;
}
while ((b - a) > eps)
{
c = (a + b) / 2.0;
if (f(c) == 0.0)
break;
else if (f(a) * f(c) < 0)
b = c;
else
a = c;
}
cout << "Przyblizone miejsce zerowe: " << (a + b) / 2.0 << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRGVmaW5pY2phIGZ1bmtjamkKZG91YmxlIGYoZG91YmxlIHgpCnsKICAgIHJldHVybiB4ICogeCAtIDAuNTsKfQoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgYSA9IDAuMDsKICAgIGRvdWJsZSBiID0gMS4wOwogICAgZG91YmxlIGVwcyA9IDFlLTY7IC8vIGRva8WCYWRub8WbxIcKICAgIGRvdWJsZSBjOwoKICAgIGlmIChmKGEpICogZihiKSA+PSAwKQogICAgewogICAgICAgIGNvdXQgPDwgIkJyYWsgem1pYW55IHpuYWt1IG5hIHByemVkemlhbGUhIiA8PCBlbmRsOwogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHdoaWxlICgoYiAtIGEpID4gZXBzKQogICAgewogICAgICAgIGMgPSAoYSArIGIpIC8gMi4wOwoKICAgICAgICBpZiAoZihjKSA9PSAwLjApCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGVsc2UgaWYgKGYoYSkgKiBmKGMpIDwgMCkKICAgICAgICAgICAgYiA9IGM7CiAgICAgICAgZWxzZQogICAgICAgICAgICBhID0gYzsKICAgIH0KCiAgICBjb3V0IDw8ICJQcnp5Ymxpem9uZSBtaWVqc2NlIHplcm93ZTogIiA8PCAoYSArIGIpIC8gMi4wIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K