unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, math, vibor, ExtCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button1: TButton;
    Memo1: TMemo;
    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}

procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.Text:='0,2';
edit2.Text:='0,8';
edit3.Text:='0,0001';
edit4.clear;
memo1.Clear;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Memo1.Clear;
        Memo1.Lines.Add('Лаб. раб. №6 ст. гр. 552003 Иванова А.А.');
     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;
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*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(-x);
end;







repeat
a:=x/6; s:=x/6; n:=1;
while(abs(a)>e) do begin
n:=n+1;
a:=a*(sqr(n)*x)/((sqr(n-1))*(2*n+1)*2*n);
s:=s+a;
end;
y:=(1/4)*((x+1)/sqrt(x)*sinh(sqrt(x))-cosh(sqrt(x)));

x:=x+h;
until
x>(xk+h/2);
end;



end.
