Решение уравнения методом деления пополам - 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, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д