Решение уравнения методом деления пополам - C (СИ)
Формулировка задачи:
Доброго времени суток снова обращаюсь к вам за помощью возникла некоторая проблемка написал программу "Решение уравнения методом деления пополам " все хорошо и здорово она работает но надо написать указатель на функцию а с этим небольшая проблемка, помогите если это не составит вам труда вот код программы
Заранее благодарен за любую помощь!!!
#include <stdio.h>
#include <math.h>
double f(double x)
{
return x-3;
}
double half(double a, double b, double eps)
{
double c;
while(fabs(b-a)>eps)
{
c=(a+b)/2;
if (f(a)*f(c)<=0)
b=c;
else a=c;
}
return c;}
int main()
{
double a,b,eps,x;
printf("a,b,eps: ");
scanf("%lf %lf %lf", &a,&b,&eps);
x=half(a,b,eps);
printf("root=%lf\n",x);
return 0;
}Решение задачи: «Решение уравнения методом деления пополам»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
double g(double x)
{
return x-3;
}
double half(double a, double b, double eps, double (*f)(double))
{
double c;
while(fabs(b-a)>eps)
{
c=(a+b)/2;
if (f(a)*f(c)<=0)
b=c;
else a=c;
}
return c;}
int main()
{
double a,b,eps,x;
printf("a,b,eps: ");
scanf("%lf %lf %lf", &a,&b,&eps);
x=half(a,b,eps, g);
printf("root=%lf\n",x);
return 0;
}
Объяснение кода листинга программы
- В функции
main()программа запрашивает у пользователя значения переменныхa,bиepsс помощью функцииscanf(). - Значения переменных
a,bиepsсохраняются в соответствующих переменных. - Вызывается функция
half(a,b,eps,g), которая решает уравнение методом деления пополам. - Результат вычисления функции
half()сохраняется в переменнойx. - С помощью функции
printf()выводится на экран значение переменнойx, которое является корнем уравнения. - Программа завершается с кодом 0, что означает успешное выполнение.