Как вычислить интеграл с помощью формулы Симпсона?
Перед нами типичная студенческая работа.
Первое, что нужно сделать,— вынести расчёт интеграла в отдельную функцию. Помимо прочего, она должна принимать параметром n — количество точек разбиения. И проверьте, разумеется, работоспособность.
Затем поднимаемся на более высокий уровень — налаживаем алгоритм выдерживания точности. Я бы написал так.n := 10
yНовое := расчёт(n)
повтор
  n := n·2
  yСтарое := yНовое
  yНовое := расчёт(n)
пока |yСтарое - yНовое| > эпсилон
вывести/вернуть yНовое
Сможешь перевести на Си?
#include <iostream>
#include <math.h>
#include <cmath>
using namespace std;
typedef double(*pointFunc)(double);
double f(double x) {
	return cos(x*x);
}
double simpson_integral(pointFunc f, double a, double b, int n) {
	const double h = (b - a) / n;
	double k1 = 0, k2 = 0;
	for (int i = 1; i < n; i += 2) {
		k1 += f(a + i * h);
		k2 += f(a + (i + 1) * h);
	}
	return h / 3 * (f(a) + 4 * k1 + 2 * k2);
}
int main() {
	setlocale(LC_ALL, "RUS");
	double a, b, eps;
	double s1, s;
	int n = 1; //начальное число шагов
	cout << "Введите левую границу интегрирования a = ";
	cin >> a;
	cout << "\nВведите правую границу интегрирования b = ";
	cin >> b;
	cout << "\nВведите требуемую точность eps = ";
	cin >> eps;
	s1 = simpson_integral(f, a, b, n); //первое приближение для интеграла
	do {
		s = s1;     //второе приближение
		n = 2 * n;  //увеличение числа шагов в два раза,

		s1 = simpson_integral(f, a, b, n);
	} while (fabs(s1 - s) > eps);  //сравнение приближений с заданной точностью
	cout << "\nИнтеграл = " << s1 << endl;
}
Если кому надо... Код не мой,я просто адаптировал его под задание...
Всем спасибо за помощь,усердие,мотивацию! Особенно порадовал Roman, еще раз спасибо!