(* Gleiches File wie bruchop.pas, nur wird ein integer Ueberlauf durch die Funktion round geprueft. Dazu muss das Argument kuenstlich real gemacht werden durch die Multiplikation mit 1.0 *) PROCEDURE add(a,b:bruch;VAR res:bruch); BEGIN res.zaehler:= round( a.zaehler*1.0*b.nenner + b.zaehler*a.nenner); res.nenner := round( a.nenner*1.0*b.nenner); kuerzen(res) END; PROCEDURE sub(a,b:bruch;VAR res:bruch); BEGIN res.zaehler:= round( a.zaehler*1.0*b.nenner - b.zaehler*a.nenner); res.nenner := round( a.nenner*1.0*b.nenner); kuerzen(res) END; PROCEDURE mal(a,b:bruch;VAR res:bruch); BEGIN res.zaehler:= round( a.zaehler*1.0*b.zaehler); res.nenner := round( a.nenner*1.0*b.nenner); kuerzen(res) END; PROCEDURE teil(a,b:bruch;VAR res:bruch); BEGIN res.zaehler:= round( a.zaehler*1.0*b.nenner); res.nenner := round( a.nenner*1.0*b.zaehler); kuerzen(res) END; PROCEDURE gemzahl(a:bruch;VAR c:longint; VAR d:bruch); BEGIN c:= a.zaehler DIV a.nenner; d.zaehler:= a.zaehler-a.nenner*(a.zaehler DIV a.nenner); d.nenner:= a.nenner END;