package body POZ_RAC is function Lnko ( m, n: POSITIVE ) return POSITIVE is a: POSITIVE := m; b: POSITIVE := n; begin while a/=b loop if a>b then a:=a-b; else b:=b-a; end if; end loop; return a; end Lnko; function Egyszerusitve ( p: PozRac ) return PozRac is kozos: POSITIVE := Lnko(p.szamlalo,p.nevezo); begin return (p.szamlalo/kozos,p.nevezo/kozos); end Egyszerusitve; function "/" ( szamlalo, nevezo: POSITIVE ) return PozRac is begin return Egyszerusitve((szamlalo,nevezo)); end "/"; function "/" ( p, q: PozRac ) return PozRac is begin return Egyszerusitve( (p.szamlalo*q.nevezo,p.nevezo*q.szamlalo) ); end "/"; function "/" ( p: PozRac; n: POSITIVE ) return PozRac is begin return p / PozRac'(n/1); end "/"; function Szamlalo ( p: PozRac ) return POSITIVE is begin return p.szamlalo; end; function Nevezo ( p: PozRac ) return POSITIVE is begin return p.nevezo; end; end POZ_RAC;