Advertisement
Vladislav8653

aisd 1st lab

Feb 26th, 2023
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.71 KB | None | 0 0
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. {$R *.res}
  6.  
  7. uses
  8.   System.SysUtils, Math;
  9. type
  10.   Mnogochlen = ^TMnogochlen;
  11.   TMnogochlen = record
  12.     Coefficient: Integer;
  13.     Degree: Integer;
  14.     Next: Mnogochlen;
  15.   end;
  16.  
  17. Function Equality (P, Q : Mnogochlen) : Boolean;
  18. Var
  19.     IsEqual : Boolean;
  20. Begin
  21.     IsEqual := True;
  22.     while IsEqual and (Q <> nil) and (P <> nil) do
  23.     Begin
  24.         if (Q^.Degree <> P^.Degree) or (Q^.Coefficient <> P^.Coefficient) then
  25.         Begin
  26.             IsEqual := False;
  27.             Break;
  28.         End;
  29.         Q := Q^.Next;
  30.         P := P^.Next;
  31.     End;
  32.     Equality := IsEqual;
  33. End;
  34.  
  35. Function Meaning (P : Mnogochlen; X : Integer) : Integer;
  36. Var
  37.     Sum : Integer;
  38. Begin
  39.     Sum := 0;
  40.     while P <> nil do
  41.     Begin
  42.         Sum := Sum + P^.Coefficient * Round (Power (X, P^.Degree));
  43.         P := P^.Next;
  44.     End;
  45.     Meaning := Sum;
  46. End;
  47.  
  48. procedure Add (Var P : Mnogochlen; R,Q : Mnogochlen);
  49. var
  50.     NewList : Mnogochlen;
  51. Begin
  52.     P := nil;
  53.     while (R <> nil) and (Q <> nil) do
  54.     Begin
  55.         New(NewList);
  56.         NewList^.Next := nil;
  57.         if (R = nil) or ((Q <> nil) and (R^.Degree < Q^.Degree)) then
  58.         begin
  59.             NewList^.Coefficient := Q^.Coefficient;
  60.             NewList^.Degree := Q^.Degree;
  61.             Q := Q^.Next;
  62.         end
  63.         else if (Q = nil) or ((R <> nil) and (R^.Degree > Q^.Degree)) then
  64.         Begin
  65.             NewList^.Coefficient := R^.Coefficient;
  66.             NewList^.Degree := R^.Degree;
  67.             R := R^.Next;
  68.         End
  69.         else
  70.         Begin
  71.             NewList^.Coefficient := R^.Coefficient + Q^.Coefficient;
  72.             NewList^.Degree := R^.Degree + Q^.Degree;
  73.             R := R^.Next;
  74.             Q := Q^.Next;
  75.         End;
  76.         if P = nil then
  77.             P := NewList
  78.         else
  79.         Begin
  80.             NewList^.Next := P;
  81.             P := NewList;
  82.         End;
  83.     End;
  84. End;
  85.  
  86. function GetMnogochlen : Mnogochlen;
  87. Var
  88.     I, N : Integer;
  89.     Pt : Mnogochlen;
  90. Begin
  91.     Writeln('Введите кол-во элементов списка:');
  92.     Readln(N);
  93.     New (Pt);
  94.     for I := 0 to N - 1 do
  95.     Begin
  96.         New(Pt^.Next);
  97.         Pt := Pt^.Next;
  98.         Writeln('Введите коэффициент:');
  99.         Readln(Pt^.Coefficient);
  100.         Writeln('Введите степень многочлена:');
  101.         Readln(Pt^.Degree);
  102.     End;
  103.     Pt^.Next := Nil;
  104.     GetMnogochlen := Pt;
  105. End;
  106.  
  107. var
  108.     P, Q, R : Mnogochlen;
  109.     Choose, X, Sum : Integer;
  110.     Flag : Boolean;
  111. begin
  112.     Writeln ('Введите номер интересующей вас функции, где:');
  113.     Writeln ('1 - проверяет равенство 2 многочленов');
  114.     Writeln ('2 - вычисляет значение многочлена в точке X');
  115.     Writeln ('3 - суммирует 2 многочлена');
  116.     Readln (Choose);
  117.     if Choose = 1 then
  118.     Begin
  119.         P := GetMnogochlen();
  120.         Q := GetMnogochlen();
  121.         Flag := Equality (P, Q);
  122.         if Flag then
  123.             Writeln ('Равны')
  124.         else
  125.             Writeln ('Не равны')
  126.     End;
  127.     if Choose = 2 then
  128.     Begin
  129.         P := GetMnogochlen();
  130.         Writeln ('Введите X:');
  131.         Readln (X);
  132.         Sum := Meaning (P, X);
  133.         Writeln('Если в многочлен подставить X, то получится ',Sum);
  134.     End;
  135.     if Choose = 3 then
  136.     Begin
  137.         Q := GetMnogochlen();
  138.         R := GetMnogochlen();
  139.         Add(P, R, Q);
  140.         while P <> nil do
  141.         Begin
  142.             Write(P^.Coefficient, 'а^',P^.Degree);
  143.             P := P^.Next;
  144.         End;
  145.     End;
  146.     Readln;
  147. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement