## C++梯形法求积分

#include
#include
#include
using namespace std;
double f1(double x)
{
return (4.0 / (1.0 + x * x));
}
double f2(double x)
{
return (sqrt(1.0 + x * x));
}
double f3(double x)
{
return sin(x);
}
double integral(long int n , double a,double b,double(*f)(double))
{
long int i;
double y,h;
h = (b - a) / n;
y = ((*f)(a) + (*f)(b)) / 2.0;
for (i = 1; i <= (n - 1); i++)
{
y += (*f)(a + i * h);
}
y *= h;
return y;

}
int main()
{
long int n;
int m;
double a, b;
while (cin >> m >> n >> a >> b)
{
switch (m)
{
case 1:cout << fixed << setprecision(2)<< integral(n, a, b, f1) << endl; break;
case 2:cout << fixed << setprecision(2)<< integral(n, a, b, f2) << endl; break;
case 3:cout << fixed << setprecision(2)<<integral(n, a, b, f3) << endl; break;

	}

 }

}

猜你喜欢

转载自blog.csdn.net/m0_45864023/article/details/103449026