/*
	© MATTO MATTI 2017
	http://mattomatti.com/pl/a0055
	napisane przy użyciu Visual Studio Community 2015
	2017-09-14 v 1.0
*/

#include <iostream>
#include "wielomian.h"

using namespace std;

double szukajMinimum(wielomian* w, double lewy, double prawy, double precyzja = 0.0001) {
	if (abs(prawy - lewy) < precyzja)
		return (lewy + prawy) / 2;
	double znacznikLewy = lewy + (prawy - lewy) / 3;
	double znacznikPrawy = prawy - (prawy - lewy) / 3;
	if (wartosc_wielomianu(w, znacznikLewy) >
		wartosc_wielomianu(w, znacznikPrawy)) {
		return szukajMinimum(w, znacznikLewy, prawy, precyzja);
	} else {
		return szukajMinimum(w, lewy, znacznikPrawy, precyzja);
	}
}

int main() {
	cout << "Podaj wzor funkcji (tylko wielomian):\n";
	wielomian* w = wczytajWieloman();
	cout << "f(x) = ";
	wypiszWieloman(w);
	double a, b;
	cout << "Podaj przedzial [a, b]\na = ";
	cin >> a;
	cout << "b = ";
	cin >> b;
	cout << "Szukany x to " << szukajMinimum(w, a, b) << endl;
	system("pause");
	return 0;
}