Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. оде есть ошибки. Вот переделал в Делфи, вроде все ошибки поправил.
  2.  
  3. DelphiВыделить код
  4. 1
  5. 2
  6. 3
  7. 4
  8. 5
  9. 6
  10. 7
  11. 8
  12. 9
  13. 10
  14. 11
  15. 12
  16. 13
  17. 14
  18. 15
  19. 16
  20. 17
  21. 18
  22. 19
  23. 20
  24. 21
  25. 22
  26. 23
  27. 24
  28. 25
  29. 26
  30. 27
  31. 28
  32. 29
  33. 30
  34. 31
  35. 32
  36. 33
  37. 34
  38. 35
  39. 36
  40. 37
  41. 38
  42. 39
  43. 40
  44. 41
  45. 42
  46. 43
  47. 44
  48. 45
  49. 46
  50. 47
  51. 48
  52. 49
  53. 50
  54. 51
  55. 52
  56. 53
  57. 54
  58. 55
  59. 56
  60. 57
  61. 58
  62. 59
  63. 60
  64. 61
  65. 62
  66. 63
  67. 64
  68. 65
  69. 66
  70. 67
  71. 68
  72. 69
  73. 70
  74. 71
  75. 72
  76. 73
  77. 74
  78. 75
  79. 76
  80. 77
  81. 78
  82. 79
  83. 80
  84. 81
  85. 82
  86. 83
  87. 84
  88. 85
  89. 86
  90. 87
  91. 88
  92. 89
  93. 90
  94. 91
  95. 92
  96. 93
  97. 94
  98. unit Unit1;
  99.  
  100. interface
  101.  
  102. uses
  103. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  104. Dialogs, Grids, StdCtrls, Spin;
  105.  
  106. type
  107. TForm1 = class(TForm)
  108. StringGrid1: TStringGrid;
  109. StringGrid2: TStringGrid;
  110. Label1: TLabel;
  111. Label2: TLabel;
  112. SpinEdit1: TSpinEdit;
  113. Label3: TLabel;
  114. Button1: TButton;
  115. Button2: TButton;
  116. procedure Button1Click(Sender: TObject);
  117. procedure Button2Click(Sender: TObject);
  118. private
  119. { Private declarations }
  120. public
  121. { Public declarations }
  122. end;
  123. type Tmatrix=array of array of real;
  124. var
  125. Form1: TForm1;
  126. a:Tmatrix;
  127. n:integer;
  128. implementation
  129.  
  130. {$R *.dfm}
  131. //перестановка строк, чтобы исключить, если это возможно
  132. //деление на ноль, или число, близкое к нолю
  133. procedure Per(k,n:integer;var a:Tmatrix);
  134. var j,i,p:integer;z:Real;
  135. begin
  136. z:=a[k,k];i:=k; //текущая строка
  137. for j:=k+1 to n-1 do //ниже ее
  138. begin
  139. if abs(a[j,k])>z then //ищем в этом столбце максимальный элемент
  140. begin
  141. z:=a[j,k];
  142. i:=j;
  143. end;
  144. end;
  145. if i>k then //если нашли
  146. begin
  147. for p:=k to n do //переставляем строки
  148. begin
  149. z:=a[i,p];a[i,p]:=a[k,p];a[k,p]:=z;
  150. end;
  151. end;
  152. end;
  153.  
  154. procedure TForm1.Button1Click(Sender: TObject);
  155. begin
  156. n:=SpinEdit1.Value;
  157. StringGrid1.ColCount:=n+1;
  158. StringGrid1.RowCount:=n;
  159. StringGrid2.ColCount:=n+1;
  160. StringGrid2.RowCount:=n;
  161. Showmessage('Введите в первую таблицу уоэффициенты и свободные члены');
  162. end;
  163.  
  164. procedure TForm1.Button2Click(Sender: TObject);
  165. var i,j,k:integer;
  166. r:real;
  167. begin
  168. //создание матрицы
  169. Setlength(a,n,n+1);
  170. for i:=0 to n-1 do
  171. for j:=0 to n do
  172. a[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);
  173. //преобразование
  174. for k:=0 to n-1 do
  175. begin
  176. Per(k,n,a); //перестановка
  177. for j:=k+1 to n-1 do //прямой ход Гаусса
  178. begin
  179. r:=a[j,k]/a[k,k];
  180. for i:=k to n-1 do
  181. a[j,i]:=a[j,i]-r*a[k,i];
  182. a[j,n]:=a[j,n]-r*a[k,n];
  183. end;
  184. end;
  185. //вывод результата
  186. for i:=0 to n-1 do
  187. for j:=0 to n do
  188. StringGrid2.Cells[j,i]:=FloatToStrF(a[i,j],ffFixed,6,2);
  189. end;
  190.  
  191. end.
  192. 3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement