unit elipse;

{$mode objfpc}{$H+}

interface
  Uses sysutils;    // para FormatFloat
type TElipse = class
  procedure Iniciar (a_,b_: Real);
  function Area: Real;
  function Perimetro: Real;
  function Excentricidad: Real;
  procedure Resultado;
end;

var a,b: Real;

implementation

procedure TElipse.Iniciar(a_, b_: Real);
begin
  a:=a_;  // semieje mayor
  b:=b_;  // semieje menor
end;

function TElipse.Area: Real;
begin
  Result:= Pi * a * b;
end;

function TElipse.Excentricidad: Real;
begin
  Result:= sqrt(a*a-b*b)/a;
end;

function TElipse.Perimetro: Real;
begin
  Result:= Pi * (3*(a+b)-sqrt((3*a+b)*(a+3*b)));
end;

procedure TElipse.Resultado;
begin
 Writeln ('Elipse con semiejes a: ',FormatFloat('0.00', a),' y ', 'b: ',FormatFloat('0.00', b));
 WriteLn();
 WriteLn('Area: ', FormatFloat('0.00', Area));
 WriteLn('Perimetro: ', FormatFloat('0.00', Perimetro));
 WriteLn('Excentricidad: ', FormatFloat('0.00', Excentricidad));
end;
end.

