#include<stdio.h>
#include<math.h>
double cosx(double x);
double sinx(double x);
double line(double x);
double integral(double a, double b, double (*p)(double), double n);
int main()
{
printf("%lf\n",integral(1,2,&cosx,100));
printf("%lf\n",integral(2,3,&sinx,100));
printf("%lf\n",integral(3,4,&line,100));
return 0;
}
double integral(double a, double b, double (*p)(double), double n)
{
double step=(b-a)/n;
double sum=0;
for(double i=a;i<=b-step;i+=step)
{
sum+=0.5*step*(p(i+step)+p(i));
}
return sum;
}
double cosx(double x)
{
return cos(x);
}
double sinx(double x)
{
return sin(x);
}
double line(double x)
{
return (double)2*x+1;
}