#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
double fKuadrat (double x, double a, double b, double c) {
return a * x * + b * x + c;
}
pair<double, double> hClimbing (double a, double b, double c) {
srand(static_cast<unsigned>(time(0))) ;
double x = (double) rand () / RAND_MAX * 200 - 100;
double deltax = 0.01;
double nilai = fKuadrat (x - deltax, a, b, c) ;
double nilai_kiri = fKuadrat (x - deltax, a, b, c) ;
double nilai_kanan = fKuadrat (x + deltax, a, b, c) ;
while (nilai_kiri > nilai || nilai_kanan > nilai) {
if (nilai_kiri > nilai_kanan) {
x -= deltax;
nilai = nilai_kiri;
} else {
x += deltax;
nilai = nilai_kanan;
}
nilai_kiri = fKuadrat (x - deltax, a, b, c);
nilai_kanan = fKuadrat (x + deltax, a, b, c);
}
return make_pair (x, nilai);
}
int main () {
double a, b, c;
cout << "masukkan nilai a : ";
cin >> a;
cout << "Masukkan nilai b : ";
cin >> b;
cout << "Masukkan nilai c : ";
cin >> c;
pair<double, double> result = hClimbing (a, b, c);
double x_maks = result.first;
double nilai_maks = result.second;
cout << "Nilai x untuk hasil maksimum: " << x_maks << endl;
cout << "Nilai maksimum f(x): "<< nilai_maks << endl;
system ("PAUSE");
return 0;
}