unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    Edit3: TEdit;
    Edit4: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    BitBtn1: TBitBtn;
    RadioGroup1: TRadioGroup;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(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:=1;
 n:=0;
 s:=1;
try
 while(abs(a)>e) do begin
    n:=n+1;
    a:=a*(2*x)/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(2*x);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='0,1' ;
Edit2.Text:='0,7'  ;
Edit3.Text:='0,1'  ;
Edit4.Text:='0,0001'  ;
Memo1.Clear;
Memo1.Lines.Add('Лаб. раб. №6 020602 Сенкевич А.В.') ;
RadioGroup1.ItemIndex:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);

begin
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='+FloatToStrF(m,fffixed,8,3));
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.
