Bergervei/Pascal-Objekte
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Pascal</language>
<code id="513285d006ee2">
type tbruch=object
private
z, n: integer;
public
constructor erzeuge(z0, n0: integer);
function zaehler: integer;
function nenner: integer;
procedure addition(summand: tbruch);
procedure subtraktion(subtrahend: tbruch);
procedure multiplikation(faktor: tbruch);
procedure reziprok;
procedure division(dividend: tbruch);
function dezimal: real;
function sign: char;
procedure ausgabe; virtual;
end;
constructor tbruch.erzeuge(z0, n0: integer);
begin
z:=z0; n:=n0;
end;
function tbruch.zaehler: integer;
begin
zaehler:=z;
end;
function tbruch.nenner: integer;
begin
nenner:=n;
end;
procedure tbruch.addition(summand: tbruch);
begin
z:=z*summand.n+n*summand.z;
n:=n*summand.n;
end;
procedure tbruch.subtraktion(subtrahend: tbruch);
begin
z:=z*subtrahend.n-n*subtrahend.z;
n:=n*subtrahend.n;
end;
procedure tbruch.multiplikation(faktor: tbruch);
begin
z:=z*faktor.z;
n:=n*faktor.n;
end;
procedure tbruch.division(dividend: tbruch);
begin
z:=z*dividend.n;
n:=n*dividend.z;
end;
procedure tbruch.reziprok;
var z0: integer;
begin
z0:=z; z:=n; n:=z0;
end;
function tbruch.dezimal: real;
begin
dezimal:=z/n;
end;
function tbruch.sign: char;
begin
if z*n<0 then sign:='-' else sign:=' ';
end;
procedure tbruch.ausgabe;
var zs, ns : string;
x, y : integer;
laenge, i: integer;
begin
x:=wherex; y:=wherey;
str(abs(z),zs); str(abs(n),ns);
laenge:=length(zs); if laenge<length(ns) then laenge:=length(ns);
write(' '+abs(z)); writeln;
write(sign+' '); for i:=1 to laenge do write('-'); writeln;
write(' '+abs(n)); writeln;
end;
</code>
<code id="513285d006f3f">
var bruch1: tbruch;
</code>
<run id="513285d006fa2">
bruch1.erzeuge(2, 3);
bruch1.ausgabe;
</run>