Переделать код С++ в 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 знаками после запятой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д