ВУЗ:
Составители:
Рубрика:
77
procedure Rational.DivideBy(n: Number);
var _num,_den: Integer;
begin
if n is Rational then begin
if (n as Rational).num=0
then raise Exception.Create('Division by zero');
_num:=self.num*(n as Rational).den;
_den:=self.den*(n as Rational).num;
self.num:=_num; self.den:=_den;
self.Normalize; self.Reduce;
end
else raise Exception.Create('Invalid operation');
end;
procedure Rational.Assign(n: Number);
begin
if (n is Rational) then begin
self.num:=(n as Rational).num;
self.den:=(n as Rational).den;
end
else raise Exception.Create('Invalid operation');
end;
function Rational.IsEqual(n: Number): Boolean;
begin
if (n is Rational) and
(self.num*(n as Rational).den=self.den*(n as Rational).num)
then result:=true
else result:=false;
end;
function Rational.AsString: String;
begin result:=IntToStr(self.num)+'/'+IntToStr(self.den); end;
constructor Rational.Create;
begin self.num:=0; self.den:=1; end;
function Rational.GetNum: Integer;
begin result:=self.num; end;
function Rational.GetDen: Integer;
begin result:=self.den; end;
procedure Rational.SetNum(value:Integer);
begin self.num:=value; end;
procedure Rational.SetDen(value:Integer);
begin
if value>0 then self.den:=value
else raise Exception.Create('Illegal value of denominator');
end;
end.
procedure Rational.DivideBy(n: Number);
var _num,_den: Integer;
begin
if n is Rational then begin
if (n as Rational).num=0
then raise Exception.Create('Division by zero');
_num:=self.num*(n as Rational).den;
_den:=self.den*(n as Rational).num;
self.num:=_num; self.den:=_den;
self.Normalize; self.Reduce;
end
else raise Exception.Create('Invalid operation');
end;
procedure Rational.Assign(n: Number);
begin
if (n is Rational) then begin
self.num:=(n as Rational).num;
self.den:=(n as Rational).den;
end
else raise Exception.Create('Invalid operation');
end;
function Rational.IsEqual(n: Number): Boolean;
begin
if (n is Rational) and
(self.num*(n as Rational).den=self.den*(n as Rational).num)
then result:=true
else result:=false;
end;
function Rational.AsString: String;
begin result:=IntToStr(self.num)+'/'+IntToStr(self.den); end;
constructor Rational.Create;
begin self.num:=0; self.den:=1; end;
function Rational.GetNum: Integer;
begin result:=self.num; end;
function Rational.GetDen: Integer;
begin result:=self.den; end;
procedure Rational.SetNum(value:Integer);
begin self.num:=value; end;
procedure Rational.SetDen(value:Integer);
begin
if value>0 then self.den:=value
else raise Exception.Create('Illegal value of denominator');
end;
end.
77
