#include <iostream>
#include <cmath>
using namespace std;
// definicja funkcji
double f(double x)
{
return x*x*x - 2;
}
int main()
{
double a, b, srodek;
double eps = 0.000001; // dokladnosc
cout << "Podaj poczatek przedzialu a: ";
cin >> a;
cout << "Podaj koniec przedzialu b: ";
cin >> b;
// sprawdzenie warunku metody bisekcji
if (f(a) * f(b) >= 0)
{
cout << "Brak miejsca zerowego w tym przedziale." << endl;
return 0;
}
// petla bisekcji
while ((b - a) / 2 > eps)
{
srodek = (a + b) / 2;
if (f(srodek) == 0)
break;
else if (f(a) * f(srodek) < 0)
b = srodek;
else
a = srodek;
}
srodek = (a + b) / 2;
cout << "Przyblizone miejsce zerowe: " << srodek << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gZGVmaW5pY2phIGZ1bmtjamkKZG91YmxlIGYoZG91YmxlIHgpCnsKICAgIHJldHVybiB4KngqeCAtIDI7Cn0KCmludCBtYWluKCkKewogICAgZG91YmxlIGEsIGIsIHNyb2RlazsKICAgIGRvdWJsZSBlcHMgPSAwLjAwMDAwMTsgLy8gZG9rbGFkbm9zYwoKICAgIGNvdXQgPDwgIlBvZGFqIHBvY3phdGVrIHByemVkemlhbHUgYTogIjsKICAgIGNpbiA+PiBhOwoKICAgIGNvdXQgPDwgIlBvZGFqIGtvbmllYyBwcnplZHppYWx1IGI6ICI7CiAgICBjaW4gPj4gYjsKCiAgICAvLyBzcHJhd2R6ZW5pZSB3YXJ1bmt1IG1ldG9keSBiaXNla2NqaQogICAgaWYgKGYoYSkgKiBmKGIpID49IDApCiAgICB7CiAgICAgICAgY291dCA8PCAiQnJhayBtaWVqc2NhIHplcm93ZWdvIHcgdHltIHByemVkemlhbGUuIiA8PCBlbmRsOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIC8vIHBldGxhIGJpc2VrY2ppCiAgICB3aGlsZSAoKGIgLSBhKSAvIDIgPiBlcHMpCiAgICB7CiAgICAgICAgc3JvZGVrID0gKGEgKyBiKSAvIDI7CgogICAgICAgIGlmIChmKHNyb2RlaykgPT0gMCkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZWxzZSBpZiAoZihhKSAqIGYoc3JvZGVrKSA8IDApCiAgICAgICAgICAgIGIgPSBzcm9kZWs7CiAgICAgICAgZWxzZQogICAgICAgICAgICBhID0gc3JvZGVrOwogICAgfQoKICAgIHNyb2RlayA9IChhICsgYikgLyAyOwoKICAgIGNvdXQgPDwgIlByenlibGl6b25lIG1pZWpzY2UgemVyb3dlOiAiIDw8IHNyb2RlayA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9Cg==