Выходит целое число вместо дробного
При введении данных должна выскакивать дробь, но выходит целое число. Не понимаю, что не так.
Данные, необходимые для ввода: a=0, b=1, eps= 0.001.
Должно получиться x = 0.000976562.
#include <iostream>
#include <cmath>
using namespace std;
double f (double x) {
double (sin(0.5 + x) - 2 * x + 0.5);
}
double horda(double (*f)(double), double a, double b, double eps)
{
double fa = f(a), fb = f(b), c;
if ((fa * fb) > 0) throw runtime_error("Нет корней");
double x = a;
while (fabs(f(b) - f(a)) > eps)
{
c = (f(b) * a - f(a) * b) / (f(b) - f(a));
if ((f(a) * f(c)) > 0) a = c;
else b = c;
}
return c;
}
int main() {
double a, b, eps, x;
cout << "Напишите значение a: ";
cin >> a;
cout << "Напишите значение b: ";
cin >> b;
cout << "Напишите точность е: ";
cin >> eps;
cin.get();
try
{
x = horda(f, a, b, eps);
cout << "x = " << x << endl;
}
catch (runtime_error r)
{
cout << r.what();
}
cin.get();
return 0;
}
Ответы (1 шт):
Автор решения: ITBEGINER
→ Ссылка
Быть может я ошибаюсь но это похоже на аппроксимацию замените на это
double f (double x) {
return sin(0.5 + x) - 2 * x + 0.5;
}