Перевод кода из pascal в c# (консольное приложение) : написать программу, которая позволяет вычислять определенный интеграл с формулы ньютона-котеса. код: { программа для вычисления интеграла численным методом ньютона-котеса открытого типа 4-го порядка с заданной погрешностью вычислений } program newtoncotes; {подинтегральная функция} function f(x: real): real; begin f : = sin(x); end; {вычисление интеграла на отрезке [a, b] методом ньютона-котеса открытого типа 4-го порядка} function newtoncotesopen4(a, b: real): real; const n = 4; {порядок метода} c: array [1..n - 1] of real = (2, -1, 2); {весовые коэффициенты} k = 3.0; {делитель} var res: real; h: real; {величина шага} x: real; i: integer; begin h : = (b - a) / n; res : = 0; for i : = 1 to n - 1 do begin x : = a + i * h; res : = res + c[i] * f(x); end; newtoncotesopen4 : = res * (b - a) / k; end; {вычисление интеграла на отрезке [a, b] как суммы интегралов на n подинтервалах} function sumsubintervals(a, b: real; n: integer): real; var h: real; i: integer; begin sumsubintervals : = 0; h : = (b - a) / n; for i : = 1 to n do sumsubintervals : = sumsubintervals + newtoncotesopen4(a + pred(i) * h, a + i * h); end; var a, b, {границы интегрирования} eps: real; {погрешность численного интегрирования} n: integer; {количество подинтервалов интегрирования} icur, {значение интеграла на текущем шаге итерации} ipre: real; {значение интеграла на предыдущем шаге итерации} begin a : = 0; b : = pi; eps : = 0.00001; n : = 1; icur : = sumsubintervals(a, b, n); repeat ipre : = icur; n : = 2 * n; {увеличиваем количество подинтервалов} icur : = sumsubintervals(a, b, n); writeln('i=', icur: 10: 8, ' при n=', n, ', e=', abs(icur - ipre): 10: 8); until abs(icur - ipre) < eps; writeln(''); writeln('i=', icur: 10: 8, ' при n=', n, ', e=', abs(icur - ipre): 10: 8); end.