Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ.Исрапилова.442.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
641 Кб
Скачать
☆

2.4.6. Входные и выходные данные

Входными данными программы являются вещественные числа- значения коэффициентов уравнений системы, вводимые с клавиатуры.

Выходными данными являются значения действительных корней системы — вещественные числа. Выходные данные выводятся и на экран и в файл.

2.6. Результат работы программы

При запуске исполнительного файла открывается главная форма (рис. 1).

Рис.1

При нажатии кнопки «Ввод» программа выдает матрицу с тем количеством ячеек ,сколько неизвестных вы ввели на 1ом шаге.

Дальше, после ввода всех данных, при нажатии кнопки «Рассчитать» выдаётся ответ.

При нажатии кнопки «Сохранить результат как» результат будет записан в файл, место расположения файла, вы задаете сами.

Заключение

Разработанная в ходе выполнения курсового проекта программа удовлетворяет всем требованиям задания, что подтверждается протоколом испытаний.

Разработанная программа может быть использована для решения СЛАУ. Результат выполнения программы может быть записан в файл по желанию пользователя. Программа может быть использована в учебных целях для демонстрации работы процедур и функций, работающих с вещественным типом.

СПИСОК ЛИТЕРАТУРЫ

  1. Стандарты Единой Системы Программной Документации:

  • ГОСТ 19.105-78 Общие требования к программным документам;

  • ГОСТ 19.106-78 Требования к программным документам, выполненным печатным способом;

  • ГОСТ 19.201-78 Техническое задание. Требования к содержанию и оформлению;

  • ГОСТ 19.301-78 Программа и методика испытаний. Требования к содержанию и оформлению;

  • ГОСТ 19.401-78 Текст программы. Требования к содержанию и оформлению;

  • ГОСТ 19.402-78 Описание программы. Требования к содержанию и оформлению;

  • ГОСТ 19.505-79 Руководство оператора. Требования к содержанию и оформлению;

  • ГОСТ 19.701-90 Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.

ПРИЛОЖЕНИЕ 1

Рис.1

ПРИЛОЖЕНИЕ 2

  1. unit Unit1;

  2. interface

  3. uses

  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  5. Dialogs, StdCtrls, Grids, Printers;

  6. type

  7. TForm1 = class(TForm)

  8. Button1: TButton;

  9. Edit1: TEdit;

  10. StringGrid1: TStringGrid;

  11. StringGrid2: TStringGrid;

  12. Memo1: TMemo;

  13. Edit3: TEdit;

  14. Label1: TLabel;

  15. Button2: TButton;

  16. Label2: TLabel;

  17. Label3: TLabel;

  18. Label5: TLabel;

  19. Label6: TLabel;

  20. Button4: TButton;

  21. SaveDialog1: TSaveDialog;

  22. procedure Button1Click(Sender: TObject);

  23. procedure Button2Click(Sender: TObject);

  24. procedure Edit3KeyPress(Sender: TObject; var Key: Char);

  25. procedure Edit1KeyPress(Sender: TObject; var Key: Char);

  26. procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

  27. procedure Button4Click(Sender: TObject);

  28. procedure StringGrid2KeyPress(Sender: TObject; var Key: Char);

  29. private

  30. end;

  31. var

  32. Form1: TForm1;

  33. implementation

  34. type

  35. matrix_a = array [1..100,1..100] of real;

  36. matrix_b = array [1..100] of real;

  37. procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);

  38. {контроль вводимых данных}

  39. begin

  40. Case Key of

  41. '0'..'9',#8: ;

  42. #13:

  43. begin

  44. if Key='.'

  45. then Key:=',';

  46. if Pos(',',Edit1.Text)<>0

  47. then Key:=Chr(0);

  48. end;

  49. else Key:=Chr(0);

  50. end;

  51. end;

  52. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

  53. {контроль вводимых данных}

  54. begin

  55. Case Key of

  56. '0'..'9',#8: ;

  57. #13:

  58. begin

  59. if Key='.'

  60. then Key:=',';

  61. if Pos(',',Edit1.Text)<>0

  62. then Key:=Chr(0);

  63. end;

  64. else Key:=Chr(0);

  65. end;

  66. end;

  67. procedure TForm1.Button2Click(Sender: TObject);

  68. {задание размера StringGrid}

  69. var

  70. n:integer;

  71. begin

  72. n:=strtoint(edit3.text);

  73. if n>10 then ShowMessage('error:n<=10')

  74. else

  75. StringGrid1.ColCount:= StrToInt(Edit3.Text);

  76. StringGrid1.RowCount:= StrToInt(Edit3.Text);

  77. StringGrid2.rowCount:= StrToInt(Edit3.Text);

  78. end;

  79. procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

  80. begin

  81. Case Key of

  82. #8,'0'..'9':;

  83. #13:

  84. if StringGrid1.Col<StringGrid1.ColCount-1 then

  85. StringGrid1.Col:=StringGrid1.Col+1;

  86. '.',',':

  87. begin

  88. if key<>DecimalSeparator then

  89. key:=DecimalSeparator;

  90. if pos(DecimalSeparator, stringGrid1.Cells[StringGrid1.Col,0])>0 then

  91. Key:=Chr(0);

  92. end;

  93. '-':

  94. if length(StringGrid1.Cells[stringgrid1.Col,0])>0 then

  95. Key:=Chr(0);

  96. else

  97. key:=chr(0);

  98. end;

  99. end;

  100. procedure TForm1.Button1Click(Sender: TObject);

  101. {расчет}

  102. var a: matrix_a; b,x,x0: matrix_b;

  103. n,i,j,k,max_it:integer; s,eps: real; q: Boolean;

  104. begin

  105. n:=strtoint(edit3.text);

  106. max_it:=StrToInt(Edit1.Text);

  107. eps:=0.00001;

  108. Memo1.Clear;

  109. for i:=1 to n do begin

  110. for j:=i to n do begin

  111. a[i,j]:=StrToFloat(StringGrid1.Cells[i-1,j-1]);

  112. if a[i,i]=0 then ShowMessage('error:opr=0,vvedite drugie dannie');

  113. end;

  114. end;

  115. for i:=1 to n do begin

  116. for j:=i to n do begin

  117. if a[i,i]=0 then exit;

  118. end;

  119. end;

  120. for i:=1 to n do

  121. for j:=1 to n do

  122. a[i,j]:=StrToFloat(StringGrid1.Cells[i-1,j-1]);

  123. for i:=1 to n do

  124. b[i]:=StrToFloat(StringGrid2.Cells[0,i-1]);

  125. for i:=1 to n do

  126. begin

  127. x0[i]:=0;

  128. x[i]:=0;

  129. end;

  130. j:=0;

  131. q:=False;

  132. repeat

  133. for i:=1 to n do

  134. begin

  135. s:=0;

  136. for k:=1 to n do

  137. if i<>k then

  138. s:=s+a[k,i]*x[k];

  139. x[i]:=(b[i]-s)/a[i,i];

  140. end;

  141. for i:=1 to n do

  142. begin

  143. if abs(x[i]-x0[i])>eps then

  144. q:=False

  145. else

  146. q:=True;

  147. x0[i]:=x[i];

  148. end;

  149. inc(j);

  150. until (j=max_it) or q;

  151. Memo1.Lines.Add(Количество итераций: '+IntToStr(j));

  152. if q=False then

  153. Memo1.Lines.Add('заданная точность не достигнута');

  154. for i:=1 to n do

  155. Memo1.Lines.Add('x['+IntToStr(i)+']='+FloatToStrF(x0[i],ffgeneral,3,5));

  156. end;

  157. procedure TForm1.Button4Click(Sender: TObject);

  158. {сохранение результата в файл}

  159. begin

  160. SaveDialog1.Filter := 'Any file (*.*)|*.*'+

  161. '|Text files (*.txt)|*.TXT'+

  162. '|Pascal files (*.pas)|*.PAS';

  163. if SaveDialog1.Execute then

  164. begin

  165. Label1.Caption:= SaveDialog1.FileName;

  166. Memo1.Lines.SaveToFile(SaveDialog1.FileName);

  167. end

  168. else

  169. begin

  170. Label1.Caption:= Ошибка при сохранении';

  171. end

  172. end;

  173. procedure TForm1.StringGrid2KeyPress(Sender: TObject; var Key: Char);

  174. {контроль ввода}

  175. begin

  176. Case Key of

  177. #8,'0'..'9':;

  178. #13:

  179. if StringGrid1.Col<StringGrid1.ColCount-1 then

  180. StringGrid1.Col:=StringGrid1.Col+1;

  181. '.',',':

  182. begin

  183. if key<>DecimalSeparator then

  184. key:=DecimalSeparator;

  185. if pos(DecimalSeparator, stringGrid1.Cells[StringGrid1.Col,0])>0 then

  186. Key:=Chr(0);

  187. end;

  188. '-':

  189. if length(StringGrid1.Cells[stringgrid1.Col,0])>0 then

  190. Key:=Chr(0);

  191. else

  192. key:=chr(0);

  193. end;

  194. end;

  195. end.