unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Buttons,Unit2,Math;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    RadioGroup1: TRadioGroup;
    Memo1: TMemo;
    BitBtn1: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Xn,Xk,e:extended;
  m:word;


implementation

{$R *.dfm}

function sx(x:extended):extended;
var a,n,s:extended;
k:integer;
begin
K:=-1; a:=Xn; n:=0; S:=1;
try
 while abs(a)>e do begin
 n:=n+1;
 a:=a*(sqr(x)*(2*n+1)/(2*sqr(n)-n));
 s:=s+a;
 end;
 Result:=s;
 except
on EInvalidOp do
 k:=MessageDlg('Неправильная операция с плавающей точкой.'+
 'Продолжить вычисления?',mtError,[mbYes,mbNo],0);
on  EOverFlow do
  k:=MessageDlg('Возникла неизвестная исключительная ситуация!'+
  'Продолжить вычисления?',mtError,[mbYes,mbNo],0);
else
  k:=MessageDlg('Переполнение при выполнении операции с'+
  'плавающей точкой!Продолжить вычисления?',mtError,[mbYes,mbNo],0);
  end;
case k of
mrYes:Result:=0;
mrNo:Halt(1);
    end;
end;
function yx(x:extended):extended;
begin
result:=(1+2*sqr(x))*Power((exp(1)),(sqr(x)));;
    end;



procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
RadioGroup1.ItemIndex:=0;
  Edit1.Text:='0,1';
  Edit2.Text:='0,7';
  Edit3.Text:='10';
  Edit4.Text:='0,0001';
   end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Memo1.Clear;
  Memo1.Lines.Add('Лаб.раб. №6 ст.гр. 020603 Лебедева А.А');
Xn:=StrToFloat(Edit1.Text);
     Memo1.Lines.Add('Xn='+FloatToStrF(Xn,fffixed,6,1));
Xk:=StrToFloat(Edit2.Text);
     Memo1.Lines.Add('Xk='+FloatToStrF(Xk,fffixed,6,1));
m:=StrToInt(Edit3.Text);
     Memo1.Lines.Add('m='+IntToStr(m));
e:=StrToFLoat(Edit4.Text);
     Memo1.Lines.Add('e='+FloatToSTrF(e,fffixed,8,4));
case RadioGroup1.ItemIndex of
 0: begin
    Memo1.Lines.Add('Расчет S(x)');
    Tabl(Sx,Xn,Xk,m,Memo1);
    end;
 1: begin
    Memo1.Lines.Add('Расчет Y(X)');
    Tabl(Yx,Xn,Xk,m,Memo1);
    end;
  end;
end;
end.
