unit Unit1;

interface

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

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

var
  Form1: TForm1;
  xn,xk,e:extended;
  m:integer;

implementation

{$R *.dfm}
 function sx(x:extended):extended;
 var a,n,s:extended;
 k:integer;
 begin
 k:=-1; a:=1; s:=1; n:=0;
 try
 while (abs(a)>e) do begin
  n:=n+1;
   a:=a*sqr(x)/(2*n-1)/(2*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:=(exp(x)+exp(-x))/2;
 end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 memo1.clear;
 radiogroup1.itemindex:=0;
 Edit1.text:='0,1';
 edit2.text:='1';
 edit3.text:='9';
 edit4.text:='0,0001';
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Memo1.Clear;
xn:=StrToFloat(Edit1.Text);
Memo1.Lines.Add('xn='+FloatToStrF(xn,ffFixed,6,2));
xk:=StrToFloat(Edit2.Text);
Memo1.Lines.Add('xk='+FloatToStrF(xk,ffFixed,6,2));
m:=StrToInt(Edit3.Text);
Memo1.Lines.Add('m='+IntToStr(m));
e:=StrToFloat(Edit4.Text);
Memo1.Lines.Add('e='+FloatToStrF(e,ffFixed,8,5));
 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;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
close;
end;

end.
