Переделать код С++ в Pascal - Free Pascal
Формулировка задачи:
Есть рабочий код на С++, помогите переделать на Паскаль. Сделал программу на Паскале, похожую на эту, но у нее всегда Y в конце принимает различные значения, и они не совсем с этими сходятся.
#include <stdio.h> #include <iostream> #include <conio.h> #include <math.h> using namespace std; int main() { const int n = 6; double x[n] = {0.1,0.5,0.8,1.3,1.8,2.6}; double y[n] = {0.904837,0.606531,0.449329,0.272532,0.165299,0.0742736}; double s,xx,u; cout << " x\t y" << endl; for (int i = 0; i < n; i++) cout << x[i] <<"\t"<<y[i]<< endl; for (int i = 0; i < 3; i++) { cout << "Input xx"<< i+1 << ": "; cin >> xx; s = 0; for (int k = 0; k < n; k++) { u = 1; for (int k2 = 0; k2 < n; k2++) if (k != k2) u = u*((xx-x[k2])/(x[k]-x[k2])); s = s+u*y[k] ; } cout << "at x = " << xx << " y = " << s << " (real = " << exp(-xx) << ")" << endl; } getch(); return 0; }
Решение задачи: «Переделать код С++ в Pascal»
textual
Листинг программы
const n = 6; x: Array[0..n - 1] Of Single = (0.1, 0.5, 0.8, 1.3, 1.8, 2.6); y: Array[0..n - 1] Of Single = (0.904837, 0.606531, 0.449329, 0.272532, 0.165299, 0.0742736); var i, j, k: Byte; xx, s, u: Double; begin WriteLn(' x', #9, ' y'); for i := 0 to n - 1 do WriteLn(x[i]:3:1, #9, y[i]:9:7); for i := 0 to (n - 1) div 2 do begin Write('Input xx', i + 1, ':'); ReadLn(xx); s := 0; for j := 0 to n - 1 do begin u := 1; for k := 0 to n - 1 do if (j <> k) then u := u * (xx - x[k]) / (x[j] - x[k]); s := s + u * y[j]; end; WriteLn('at x = ', xx:0:4, ' y = ', s:0:4, ' (real = ', Exp(-xx):0:4, ')'); end; end.
Объяснение кода листинга программы
- Объявлены две константы: n = 6 и x, y = массивы из 6 элементов каждый, с разными значениями.
- Введены переменные i, j, k типа Byte; xx, s, u типа Double.
- Выводится шаблон вывода: ' x y'.
- В цикле for выводятся значения x и y по одному на каждой строке.
- В цикле for (от 0 до n/2) пользователю предлагается ввести значение xx.
- В цикле for (от 0 до n-1) вычисляется значение u для каждого элемента y, используя формулу: u = (xx - x[k]) / (x[j] - x[k]).
- Значение u умножается на y[j] и добавляется к сумме s.
- Выводится значение xx и значение s.
- Значение xx и s вычисляются с использованием ScientificConstant, функция Exp(-xx) возвращает экспоненту от -xx.
- Значение xx и s выводятся в научной нотации с 4 знаками после запятой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д