Переделать код С++ в 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.

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

  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