Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.04 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart, jpeg, Grids, StdCtrls,
  8.   Series;
  9.  
  10. type
  11.   TForm1 = class(TForm)
  12.     lbl1: TLabel;
  13.     edt1: TEdit;
  14.     btn1: TButton;
  15.     edt2: TEdit;
  16.     edt3: TEdit;
  17.     strngrd1: TStringGrid;
  18.     img1: TImage;
  19.     cht1: TChart;
  20.     lnsrsSeries1: TLineSeries;
  21.     pntsrsSeries1: TPointSeries;
  22.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  23.     procedure FormCreate(Sender: TObject);
  24.     procedure btn1Click(Sender: TObject);
  25.     procedure edt1Click(Sender: TObject);
  26.     procedure edt2Click(Sender: TObject);
  27.     procedure edt3Click(Sender: TObject);
  28.     procedure edt1KeyPress(Sender: TObject; var Key: Char);
  29.   private
  30.     { Private declarations }
  31.   public
  32.     { Public declarations }
  33.   end;
  34.  
  35. var
  36.   Form1: TForm1;
  37.  
  38. implementation
  39.  
  40. {$R *.dfm}
  41. uses Math;
  42.  
  43. procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  44. begin
  45.   if MessageDlg('Закрыть форму?', mtConfirmation, mbOKCancel, 0) = 2 then Action:= caNone else Action:= caFree;
  46. end;
  47.  
  48. procedure TForm1.FormCreate(Sender: TObject);
  49. begin
  50.   Lbl1.Caption:='';
  51.   StrnGrd1.Cells[1,0]:='Аргумент x';
  52.   StrnGrd1.Cells[2,0]:='Функция f';
  53.   StrnGrd1.Cells[3,0]:='Сумма ряда s';
  54.   StrnGrd1.Cells[4,0]:='Итерация n';
  55.   Edt1.Text:=('2');
  56.   Edt2.Text:=('50');
  57.   Edt3.Text:=('0,1');
  58. end;
  59.  
  60. procedure TForm1.btn1Click(Sender: TObject);
  61. var x,s,y,j:Real;
  62.     i,n:Integer;
  63. begin
  64.   if StrToFloat(Edt1.Text)<=1 then
  65.     begin
  66.       MessageDLG('Ошибка! x не больше 1', mtError, [mbOK],0);
  67.       Edt1.Text:=('2');
  68.     end;
  69.   x:=StrToFloat(edt1.text);
  70.   lnsrsSeries1.Clear;
  71.   pntsrsSeries1.Clear;
  72.   StrnGrd1.RowCount:=(trunc((StrToFloat(edt2.Text)-(StrToFloat(edt1.Text)))/(StrToFloat(edt3.Text))))+2;
  73.   For i:=1 to StrnGrd1.RowCount do
  74.     begin
  75.       y:=Ln((x+1)/(x-1));
  76.       s:=0;
  77.       n:=0;
  78.       while ((Abs(y-s))>0.001) do
  79.         begin
  80.           n:=n+1;
  81.           j:=2*(1/((2*n+1)*power(x,(2*n+1))));
  82.           s:=s+j;
  83.         end;
  84.     end;
  85.   StrnGrd1.Cells[0,i]:=IntToStr(i);
  86.   StrnGrd1.Cells[1,i]:=FloatToStrf(x,fffixed,0,3);
  87.   StrnGrd1.Cells[2,i]:=FloatToStrf(y,fffixed,0,3);
  88.   StrnGrd1.Cells[3,i]:=FloatToStrf(s,fffixed,0,3);
  89.   StrnGrd1.Cells[4,i]:=IntToStr(n);
  90.   lnsrsSeries1.AddXY(x,y,'',clred);
  91.   pntsrsSeries1.AddXY(x,s,'',clgreen);
  92.   x:=x+StrToFloat(edt3.Text);
  93. end;
  94.  
  95. procedure TForm1.edt1Click(Sender: TObject);
  96. begin
  97.   Lbl1.Caption:='Строка для ввода начального значения';
  98. end;
  99.  
  100. procedure TForm1.edt2Click(Sender: TObject);
  101. begin
  102.   Lbl1.Caption:='Строка для ввода конечного значения';
  103. end;
  104.  
  105. procedure TForm1.edt3Click(Sender: TObject);
  106. begin
  107.   Lbl1.Caption:='Строка для ввода шага';
  108. end;
  109.  
  110. procedure TForm1.edt1KeyPress(Sender: TObject; var Key: Char);
  111. begin
  112.   if not (Key in['1'..'9','0',DecimalSeparator,#8]) then Key:=#0;
  113. end;
  114.  
  115. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement