Advertisement
THOMAS_SHELBY_18

Untitled

Feb 10th, 2024
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.65 KB | None | 0 0
  1. program Lab1_1;
  2.  
  3. Type
  4. TPointer = ^TListElement;
  5. TListElement = record
  6. Power: Integer;
  7. Coef: Integer;
  8. NextElementPointer: TPointer;
  9. end;
  10.  
  11. Var
  12. Choice, PolinomialMeaning, X: Integer;
  13. P, Q, R: TPointer;
  14. IsEquality: Boolean;
  15.  
  16. Const
  17. MIN_NUM = -2000000000;
  18. MAX_NUM = 2000000000;
  19.  
  20. Function ReadNum (Min: Integer; Max: Integer): Integer;
  21. Var
  22. Str: String;
  23. ResultNum, CheckNum, Code: Integer;
  24. IsCorrect: Boolean;
  25. Begin
  26. Repeat
  27. Readln(Str);
  28. Val(Str, CheckNum, Code);
  29. If(Code = 0) And (CheckNum >= Min) And (CheckNum <= Max) Then
  30. Begin
  31. ResultNum := CheckNum;
  32. IsCorrect := True;
  33. End
  34. Else
  35. Begin
  36. Writeln('Некорректный ввод! Попробуйте еще раз!');
  37. IsCorrect := False;
  38. End;
  39. Until IsCorrect;
  40. ReadNum := ResultNum;
  41. End;
  42.  
  43. Procedure InputPolynomial(HeaderPointer: TPointer);
  44. Var
  45. N, I, A: Integer;
  46. Pointer: TPointer;
  47. Begin
  48. Write('Введите степень N многочлена: ');
  49. N := ReadNum(0, MAX_NUM);
  50. Writeln;
  51.  
  52. Pointer := HeaderPointer;
  53.  
  54. For I := N DownTo 0 Do
  55. Begin
  56. Write('Введите коэффициент многочлена при степени Х равной ', I, ': ');
  57. A := ReadNum(MIN_NUM, MAX_NUM);
  58. Writeln;
  59. If A <> 0 Then
  60. Begin
  61. New(Pointer^.NextElementPointer);
  62. Pointer := Pointer^.NextElementPointer;
  63. Pointer^.Power := I;
  64. Pointer^.Coef := A;
  65. End;
  66. End;
  67. Pointer^.NextElementPointer := nil;
  68. End;
  69.  
  70. Procedure OutputPolynomial(HeaderPointer: TPointer);
  71. Var
  72. Pointer: TPointer;
  73. Begin
  74. Pointer := HeaderPointer;
  75. While(Pointer <> nil) Do
  76. Begin
  77. Pointer := Pointer^.NextElementPointer;
  78. Write(Pointer^.Coef, 'X^', Pointer^.Power, ' + ');
  79. End;
  80. End;
  81.  
  82. Function Equality (PHeader: TPointer; QHeader: TPointer): Boolean;
  83. Begin
  84.  
  85. End;
  86.  
  87. Function Meaning (PHeader: TPointer; X: Integer): Integer;
  88. Begin
  89.  
  90. End;
  91.  
  92. Procedure Add (PHeader: TPointer; QHeader: TPointer; RHeader: TPointer);
  93. Begin
  94.  
  95. End;
  96.  
  97.  
  98. Begin
  99. Writeln('Данная программа предлагает:');
  100. Writeln('1) Сравнить многочлены степени N на равенство между собой.');
  101. Writeln('2) Вычислить значение многочлена при аргументе X.');
  102. Writeln('3) Сложить два многочлена.');
  103. Writeln('Введите 0 если хотите выйти.');
  104.  
  105. While True Do
  106. Begin
  107. Writeln;
  108. Writeln('Выберите желаемое действие! Введите 0, 1, 2 или 3.');
  109. Choice := ReadNum(0,3);
  110. Case Choice of
  111. 0: Break;
  112. 1:
  113. Begin
  114. Writeln('Введите многочлен P:');
  115. InputPolynomial(P);
  116. Writeln('Введите многочлен Q:');
  117. InputPolynomial(Q);
  118.  
  119. Writeln('Введенные многочлены:');
  120. OutputPolynomial(P);
  121. OutputPolynomial(Q);
  122. IsEquality := Equality(P, Q);
  123. If IsEquality then
  124. Writeln('Многочлены эквивалентны!')
  125. Else
  126. Writeln('Многочлены НЕ эквивалентны!');
  127. End;
  128. 2:
  129. Begin
  130. Writeln('Введите многочлен P:');
  131. New(P);
  132. InputPolynomial(P);
  133. Writeln('Введите Х:');
  134. X := ReadNum(MIN_NUM, MAX_NUM);
  135. PolinomialMeaning := Meaning(P, X);
  136.  
  137. Writeln('Введенный многочлен:');
  138. OutputPolynomial(P);
  139. Writeln('Значение многочлена: ', PolinomialMeaning);
  140. End;
  141. 3:
  142. Begin
  143. Writeln('Введите многочлен P:');
  144. InputPolynomial(P);
  145. Writeln('Введите многочлен Q:');
  146. InputPolynomial(Q);
  147. Add(P, Q, R);
  148.  
  149. Writeln('Введенные многочлены:');
  150. OutputPolynomial(P);
  151. OutputPolynomial(Q);
  152. Writeln('Результат сложения многочленов:');
  153. OutputPolynomial(R);
  154. End;
  155. End;
  156. End;
  157. Readln;
  158. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement