Переделать код С++ в Pascal - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Есть рабочий код на С++, помогите переделать на Паскаль. Сделал программу на Паскале, похожую на эту, но у нее всегда Y в конце принимает различные значения, и они не совсем с этими сходятся.
Листинг программы
  1. #include <stdio.h>
  2. #include <iostream>
  3. #include <conio.h>
  4. #include <math.h>
  5. using namespace std;
  6. int main()
  7. {
  8. const int n = 6;
  9. double x[n] = {0.1,0.5,0.8,1.3,1.8,2.6};
  10. double y[n] = {0.904837,0.606531,0.449329,0.272532,0.165299,0.0742736};
  11. double s,xx,u;
  12. cout << " x\t y" << endl;
  13. for (int i = 0; i < n; i++)
  14. cout << x[i] <<"\t"<<y[i]<< endl;
  15. for (int i = 0; i < 3; i++)
  16. {
  17. cout << "Input xx"<< i+1 << ": ";
  18. cin >> xx;
  19. s = 0;
  20. for (int k = 0; k < n; k++)
  21. {
  22. u = 1;
  23. for (int k2 = 0; k2 < n; k2++)
  24. if (k != k2)
  25. u = u*((xx-x[k2])/(x[k]-x[k2]));
  26. s = s+u*y[k] ;
  27. }
  28. cout << "at x = " << xx << " y = " << s << " (real = " << exp(-xx) << ")" << endl;
  29. }
  30. getch();
  31. return 0;
  32. }

Решение задачи: «Переделать код С++ в Pascal»

textual
Листинг программы
  1. const
  2.     n = 6;
  3.     x: Array[0..n - 1] Of Single = (0.1, 0.5, 0.8, 1.3, 1.8, 2.6);
  4.     y: Array[0..n - 1] Of Single = (0.904837, 0.606531, 0.449329, 0.272532, 0.165299, 0.0742736);
  5. var
  6.     i, j, k: Byte;
  7.     xx, s, u: Double;
  8. begin
  9.     WriteLn(' x', #9, '   y');
  10.     for i := 0 to n - 1 do
  11.         WriteLn(x[i]:3:1, #9, y[i]:9:7);
  12.     for i := 0 to (n - 1) div 2 do
  13.     begin
  14.         Write('Input xx', i + 1, ':'); ReadLn(xx);
  15.         s := 0;
  16.         for j := 0 to n - 1 do
  17.         begin
  18.             u := 1;
  19.             for k := 0 to n - 1 do
  20.                 if (j <> k)
  21.                 then
  22.                     u := u * (xx - x[k]) / (x[j] - x[k]);
  23.             s := s + u * y[j];
  24.         end;
  25.         WriteLn('at x = ', xx:0:4, ' y = ', s:0:4, ' (real = ', Exp(-xx):0:4, ')');
  26.     end;
  27. end.

Объяснение кода листинга программы

  1. Объявлены две константы: n = 6 и x, y = массивы из 6 элементов каждый, с разными значениями.
  2. Введены переменные i, j, k типа Byte; xx, s, u типа Double.
  3. Выводится шаблон вывода: ' x y'.
  4. В цикле for выводятся значения x и y по одному на каждой строке.
  5. В цикле for (от 0 до n/2) пользователю предлагается ввести значение xx.
  6. В цикле for (от 0 до n-1) вычисляется значение u для каждого элемента y, используя формулу: u = (xx - x[k]) / (x[j] - x[k]).
  7. Значение u умножается на y[j] и добавляется к сумме s.
  8. Выводится значение xx и значение s.
  9. Значение xx и s вычисляются с использованием ScientificConstant, функция Exp(-xx) возвращает экспоненту от -xx.
  10. Значение xx и s выводятся в научной нотации с 4 знаками после запятой.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут