unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit2, StdCtrls, 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;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

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

implementation

{$R *.dfm}
Function sx(x:extended):extended;
var a,n,s: extended;
k:integer;
begin
k:=-1; a:=1; n:=0; s:=1;
try
  while (abs(a)>e) do begin
   n:=n+1;
   a:=-a*sqr(x)/(2*n*(2*n-1));
   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);
    end;  
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
RadioGroup1.ItemIndex:=0;
Edit1.Text:='0';
Edit2.Text:='2';
Edit3.Text:='6';
Edit4.Text:='0,001';
end;

procedure TForm1.Button1Click(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('h='+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;

end.
