Получилось примерно так, считает правильно
PHP код:
// 45.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <clocale>
#include <iostream>
using namespace std;
int a,b,n,i,sum,aa;
double q, y;
float h,x,s;
float f(float x){
return 1/(x+2);
}
float F(float a, float b, float h, float N){
float S = (f(a)+f(a+N*h))/2;
float x,y;
for (int i = 1; i < N; i++){
x = a+i*h;
y = f(x);
S += y;
}
return h*S;
}
int main()
{
setlocale(LC_CTYPE, "rus");
cout<<"Выберите вид функции" <<endl;
cout<<"1. Прямая"<<endl;
cout<<"2. Парабола"<<endl;
int f,a1,b1,c;
cin>>f;
if (f==1)
{
cout<<"Введите коэффициенты в уравнение ax+b" <<endl;
cin >> a1 >> b1;
}
if (f==2)
{
cout<<"Введите коэффициенты в уравнение ax^2+bx+c" <<endl;
cin >> a1 >> b1>>c;
}
printf("Введите интервал [a;b]\n");
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
printf("Введите кол-во точек \n");
scanf("%d",&n);
h= (b-a);
h/=n;
printf("h=%f \n",h);
cout<<"Выберите метод:"<<endl;
cout<<"1. Левых прямоугольников"<<endl;
cout<<"2. Правых прямоугольников"<<endl;
cout<<"3. Трапеции"<<endl;
int m;
cin>>m;
if(m==1) {
x=a;
s=0;
for(i=0;i<=(n-1);i++)
{
if(f==1)
s+=(a1*x+b1);
else if(f==2)
s+=(a1*(x*x)+(b1*x)+c);
x=x+h;
}
s*=h;
printf("\nРешение найдено методом левых прямоугольников");
printf("\ns=%.2f \n",s);
}
else if(m=2){
x=a+h;
s=0;
for(i=0;i<=n;i++)
{
if(f==1)
s+=h*(a1*x+b1);
else if(f==2)
s+=h*(a1*(x*x)+(b1*x)+c);
x=x+h;
}
printf("\nРешение найдено методом правых прямоугольников");
printf("\ns=%.2f \n",s);
}
else if(m==3){
float integral;
integral = F(a,b,h,n);
printf("\nРешение найдено методом трапеций");
printf("\ns=%.2f \n",integral);
}
system("PAUSE");
return 0;
}