Указатель на функцию: Вычислить интеграл методом Симпсона - C (СИ)
Формулировка задачи:
Вычислить интеграл методом Симпсона . Параметры задачи: a, c, d, n>=6.
Задание − написать программу, содержащую следующие функции:
• функцию ввода исходных данных;
• функцию, реализующую заданный алгоритм расчета;
• функцию вывода расчетных данных:
• функцию f().
Функция main() используется только для вызова первых трех функций. Функция f() передаётся в функцию, реализующую заданный алгоритм расчета посредством указателя; N, M – экстенты массива; a и b передаются в функцию как глобальные переменные. Исходные данные ввести с клавиатуры.
По неизвестной мне причине не работает
#include<stdio.h>
#include<math.h>
#include<conio.h>
#define n 6
double S=0, a, x, c, d, h;
double F(double x)
{
double f, a;
f=x/pow(sin(a*x), 2);
return f;
}
double vvod(double a, double c, double d)
{
printf("a=");
scanf("%lf", a);
printf("c=");
scanf("%lf", c);
printf("d=");
scanf("%lf", d);
h=(d-c)/n;
}
double simpson(double x, double c, double d)
{ x=c+h;
while(x<d)
{
S=S+4*F(x);
x+=h;
if(x>=d) break;
S=S+2*F(x);
x+=h;
}
S=(h/3)*(S+F(c)+F(d));
printf("%f", S);
return 0;
}
int main()
{
double S=0, a, x, c, d, h;
int i;
vvod(a, c, d);
i=simpson(x, c, d);
}Решение задачи: «Указатель на функцию: Вычислить интеграл методом Симпсона»
textual
Листинг программы
double vivod(double S ) // 46 строка
{
printf("S=%f", S);
}
Объяснение кода листинга программы
В данном коде реализована функция с именем vivod, которая принимает на вход аргумент типа double, обозначенный как S. Внутри функции происходит вывод значения переменной S на экран с помощью функции printf. Код функции выглядит следующим образом:
- double vivod(double S ) // 46 строка
- {
- printf(
S=%f, S); - } Следует отметить, что в данном коде отсутствует какая-либо логика вычисления интеграла методом Симпсона. Вероятно, этот код является только частью полной реализации и не содержит всех необходимых операций для вычисления интеграла.