Интегралы; Перевод кода на С++
Добавлено: 04 июн 2009, 14:44
Здравсвуйте программисты! Подскажите пожалуйста перевести код с Паскаля на С++, просто уже замучался, не знаю как.
Мне нужно вычислить интеграл метод (правых,левых и средних прямоугольников).
Вот исходник.
1) Программа вычисления по методу левых прямоугольников.
2) Программа вычисления по методу правых прямоугольников.
3) Программа вычисления по методу средних прямоугольников.
Вот фото каких интегралов вычислить,уже много раз пытался, не знаю как
Мне нужно вычислить интеграл метод (правых,левых и средних прямоугольников).
Вот исходник.
1) Программа вычисления по методу левых прямоугольников.
Код: Выделить всё
Program levii;{Метод левых прямоугольников}
uses crt;
var i,n:integer; a,b,h,x,xb,s:real;
function f(x:real):real;
begin f:=(1/x)*sin(3.14*x/2); end;
begin
clrscr;
write('Введите нижний предел интегрирования '); readln(a);
write('Введите верхний предел интегрирования '); readln(b);
write('Введите количество отрезков '); readln(n);
h:=(b-a)/n; s:=0; xb:=a;
for i:=0 to n-1 do
begin x:=xb+i*h; s:=s+f(x)*h; end;
writeln('Интеграл равен ',s:12:10); readln;
end.
a=1 b=2 n=10 S= 18,077
a=1 b=2 n=20 S= 18, 208
a=1 b=2 n=100 S= 18, 270
Код: Выделить всё
Program pravii; {Метод правых прямоугольников}
uses crt;
var i,n:integer; a,b,h,x,xb,s:real;
function f(x:real):real;
begin f:=(1/x)*sin(3.14*x/2); end;
begin
clrscr;
write('Введите нижний предел интегрирования '); readln(a);
write('Введите верхний предел интегрирования '); readln(b);
write('Введите количество отрезков '); readln(n);
h:=(b-a)/n; s:=0; xb:=a;
for i:=1 to n do
begin x:=xb+i*h; s:=s+f(x)*h; end;
writeln('Интеграл равен ',s:12:10); readln;
end.
a=1 b=2 n=10 S=18,05455
a=1 b=2 n=20 S=18,55555
a=1 b=2 n=100 S= 18,2734
Код: Выделить всё
Program srednii; {Метод средних прямоугольников}
uses crt;
var i, n: integer; a, b, dx, x, s, xb : real;
function f(x : real):real;
begin f:=(1/x)*sin(3.14*x/2); end;
begin
clrscr;
write('Введите нижний предел интегрирования '); readln(a);
write('Введите верхний предел интегрирования '); readln(b);
write('Введите количество отрезков '); readln(n);
dx:=(b-a)/n; xb:=a+dx/2;
for i:=0 to n-1 do
begin x:=xb+i*dx; s:=s+f(x)*dx; end;
write('Интеграл равен ',s:15:10); readln;
end.
a=1 b=2 n=10 S=18,07667
a=1 b=2 n=20 S=18,368
a=1 b=2 n=100 S= 18,156