Страница 1 из 1

Интегралы; Перевод кода на С++

Добавлено: 04 июн 2009, 14:44
Golovastik
Здравсвуйте программисты! Подскажите пожалуйста перевести код с Паскаля на С++, просто уже замучался, не знаю как.
Мне нужно вычислить интеграл метод (правых,левых и средних прямоугольников).

Вот исходник.
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
2) Программа вычисления по методу правых прямоугольников.

Код: Выделить всё

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
3) Программа вычисления по методу средних прямоугольников.

Код: Выделить всё

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
Вот фото каких интегралов вычислить,уже много раз пытался, не знаю как

Re: Интегралы; Перевод кода на С++

Добавлено: 05 июн 2009, 11:56
Airhand
Что за пакость: не работает

Re: Интегралы; Перевод кода на С++

Добавлено: 05 июн 2009, 14:45
prikolist
___________________________________________________________________

Re: Интегралы; Перевод кода на С++

Добавлено: 05 июн 2009, 20:55
Naeel Maqsudov
[ syntax = cpp ]

Re: Интегралы; Перевод кода на С++

Добавлено: 06 июн 2009, 11:27
Airhand
Примерно так для первой программы:

Код: Выделить всё

double f(double x)
{
   return (1/x)*sin(3.14*x/2);
}
main //не помню параметров
{
double a, b;
unsigned int n;
double h, s, xb, x;
    cout<<"Введите нижний предел интегрирования "<<std::endl;
    cin>>a;
    cout<<"Введите верхний предел интегрирования "<<std::endl;
    cin>>b;
    cout<<"Введите количество отрезков"<<std::endl;
    cin>>n;
    h = (b - a) / n;
    s = 0;
    xb = a;
    for (size_t i = 0; i<n; ++i)
    {
        x = xb + i * h; 
        s += f(x) *h; 
    };
    print("Интеграл равен %d:12:10, s); //Не помню точного названия
    scan();  //Не помню точного названия и параметров
}
Нужно ещё подключить какие-то инклуды и не помню как экран очищается.
Всё это сделать консольной версией приложения.
Я просто перевёл прогу. За её правильность ответсвености не несу.
P.S. Набирал прогу в wordpad-е. Так что, может не компилится.

Re: Интегралы; Перевод кода на С++

Добавлено: 09 июн 2009, 16:34
azrael
Что-то я не пойму, чем у вас левые прямоугольники от правых принципиально отличаются.
Если еще интересно - пишите в icq 55655222, обсудим.

Re: Интегралы; Перевод кода на С++

Добавлено: 12 июн 2009, 08:37
samec2011
Стучите в асю 11один11-5шесть5шесть, обсудим.