Advertisement
Guest User

Untitled

a guest
Oct 18th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.93 KB | None | 0 0
  1. unit Unit3;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8. Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  9. Menus, ExtCtrls;
  10.  
  11. type
  12.  
  13. { TLabrab1Results }
  14.  
  15. TLabrab1Results = class(TForm)
  16. Vichislit: TButton;
  17. Clear: TButton;
  18. Image1: TImage;
  19. Zadacha: TLabel;
  20. Label2: TLabel;
  21. OtvetZ: TLabel;
  22. Reshenie: TLabel;
  23. Delenie: TButton;
  24. ZnachenieX: TEdit;
  25. ZnachenieY: TEdit;
  26. LabelX: TLabel;
  27. LabelY: TLabel;
  28. Nazad: TButton;
  29. Vnachalo: TButton;
  30. procedure VichislitClick(Sender: TObject);
  31. procedure ClearClick(Sender: TObject);
  32. procedure VnachaloClick(Sender: TObject);
  33. procedure NazadClick(Sender: TObject);
  34. procedure ZnachenieXChange(Sender: TObject);
  35. procedure ZnachenieYChange(Sender: TObject);
  36. procedure ZnachenieYKeyPress(Sender: TObject; var Key: char);
  37. procedure ZnachenieXKeyPress(Sender: TObject; var Key: char);
  38. private
  39. { private declarations }
  40. public
  41. { public declarations }
  42. end;
  43.  
  44. var
  45. Labrab1Results: TLabrab1Results;
  46.  
  47. implementation
  48. uses Unit1, Unit2;
  49.  
  50.  
  51. {$R *.lfm}
  52.  
  53. { TLabrab1Results }
  54.  
  55. procedure TLabrab1Results.VnachaloClick(Sender: TObject);
  56. begin
  57. Titylnik.show;
  58. Labrab1Results.hide;
  59. end;
  60.  
  61. procedure TLabrab1Results.NazadClick(Sender: TObject);
  62. begin
  63. Labrab1.show;
  64. Labrab1Results.hide;
  65. end;
  66.  
  67. procedure TLabrab1Results.ZnachenieXChange(Sender: TObject);
  68. begin
  69. if ((Length(ZnachenieX.Text) > 1) and (ZnachenieX.Text[Length(ZnachenieX.Text)] = '-')) Then
  70. begin
  71. ZnachenieX.Text := Copy(ZnachenieX.Text, 1, Length(ZnachenieX.Text) - 1);
  72. ZnachenieX.SelStart := Length(ZnachenieX.Text);
  73. ZnachenieX.SelText := '';
  74. end;
  75. end;
  76.  
  77. procedure TLabrab1Results.ZnachenieYChange(Sender: TObject);
  78. begin
  79. if ((Length(ZnachenieY.Text) > 1) and (ZnachenieY.Text[Length(ZnachenieY.Text)] = '-')) Then
  80. begin
  81. ZnachenieY.Text := Copy(ZnachenieY.Text, 1, Length(ZnachenieY.Text) - 1);
  82. ZnachenieY.SelStart := Length(ZnachenieY.Text);
  83. ZnachenieY.SelText := '';
  84. end;
  85. end;
  86.  
  87. procedure TLabrab1Results.ZnachenieYKeyPress(Sender: TObject; var Key: char);
  88. begin
  89. Case Key Of
  90. '0'..'9': ;
  91. #8: ;
  92. #13: Vichislit.Click;
  93. '.',',','-':
  94. Begin
  95. If Key='.' Then
  96. Key:=',';
  97. If Pos(',',ZnachenieY.Text)<>0 Then
  98. Key:=Chr(0);
  99. If Pos('-',ZnachenieY.Text)<>0 Then
  100. Key:=Chr(0);
  101. end;
  102. Else
  103. Key:=Chr(0);
  104. end;
  105. end;
  106.  
  107. procedure TLabrab1Results.ZnachenieXKeyPress(Sender: TObject; var Key: char);
  108. begin
  109. Case Key Of
  110. '0'..'9': ;
  111. #8: ;
  112. #13: Vichislit.Click;
  113. '.',',','-':
  114. Begin
  115. If Key='.' Then
  116. Key:=',';
  117. If Pos(',',ZnachenieX.Text)<>0 Then
  118. Key:=Chr(0);
  119. If Pos('-',ZnachenieX.Text)<>0 Then
  120. Key:=Chr(0);
  121. end;
  122. Else
  123. Key:=Chr(0);
  124. end;
  125. end;
  126.  
  127. procedure TLabrab1Results.ClearClick(Sender: TObject);
  128. begin
  129. Reshenie.Caption:='?';
  130. ZnachenieX.clear;
  131. ZnachenieY.clear;
  132. end;
  133.  
  134. procedure TLabrab1Results.VichislitClick(Sender: TObject);
  135. var X, Y, Z: Real;
  136. i:integer;
  137. check:boolean;
  138. begin
  139. if (ZnachenieX.text='') or (ZnachenieY.text='')
  140. or (ZnachenieX.text='-') or (ZnachenieY.text='-')
  141. or (ZnachenieX.text=',') or (ZnachenieY.text=',') then
  142. Begin
  143. showmessage ('Заполните корректно оба поля');
  144. Reshenie.caption:= '?'
  145. end
  146. else
  147. Begin
  148. check:=True;
  149. for i:= 1 to (length(ZnachenieX.text) or length(ZnachenieY.text)) do
  150. Begin
  151. if ((ZnachenieX.text[i] = '-') or (ZnachenieY.text[i] = '-')) and (i <> 1) then
  152. check:=False;
  153. end;
  154. if check = False then
  155. showmessage('Арифметические действия внутри переменных запрещены')
  156. else
  157. Begin
  158. Y:= StrToFloat (ZnachenieY.text);
  159. X:= StrToFloat (ZnachenieX.text);
  160. if (X+Y)>0 then
  161. Begin
  162. Z:= ((X-Y)/(sqrt(X+Y)))+ (X*(sqr(Y)))/ ((sin (sqr(X)))*(sqr(cos(Y))));
  163. Reshenie.caption:= FloatToStr(Z);
  164. end
  165. else
  166. if (X+Y)=0 then
  167. Begin
  168. Reshenie.caption:= '?';
  169. Showmessage('Знаменатель не может быть равен нулю')
  170. end
  171. else
  172. if (X+Y)<0 then
  173. Begin
  174. Reshenie.caption:= '?';
  175. Showmessage ('Подкоренное значение не может быть отрицательным');
  176. end
  177. end
  178. end
  179. end;
  180.  
  181.  
  182. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement