Struktogramme:
Programmcode:
(* Schule : Gewerbeoberschule "Max Valier" Bozen Klasse : 3Ia Author : E.P. und P.S.(Gruppe4) Lizenz : GPL *)
PROGRAM bruch_sum; USESCrt;
CONST (* Tabellenmaximum *) tabmax = 3;
TYPE t_bruch = RECORD (* Zaehler des Bruches *) zaehler: INTEGER; (* Nenner des Bruches *) nenner: INTEGER; END; bruchtab= ARRAY [1..tabmax] OF t_bruch;
(*--------genaueres zu ggT-Funktion----------*) FUNCTION ggt(zaehler : INTEGER; nenner : INTEGER) : INTEGER; VAR rest: INTEGER; BEGIN rest := 1; WHILE rest <> 0 DO BEGIN rest := zaehler MOD nenner; zaehler:= nenner; nenner:= rest; END; ggt:= zaehler; END;
(*-----------genaueres zu kgV-Funktion------------*) FUNCTION kgv(nenner1 : INTEGER; nenner2: INTEGER) : INTEGER; BEGIN kgv:= nenner1 * nenner2 DIV ggt(nenner1, nenner2); END;
(*------Prozedurzum Kuerzen des Bruches-------*) PROCEDURE kuerzen(VAR bruch3 : t_bruch); VAR hilf: INTEGER; BEGIN hilf := bruch3.zaehler; bruch3.zaehler:= bruch3.zaehler DIV ggt(hilf,bruch3.nenner); bruch3.nenner:= bruch3.nenner DIV ggt(hilf,bruch3.nenner); END;
(*-----Prozedur zum Erweitern der Brueche-----*) PROCEDURE erweitern(VAR bruch1z : INTEGER; VAR bruch1n : INTEGER; VAR bruch2z : INTEGER; VAR bruch2n : INTEGER); BEGIN bruch1z:= kgv(bruch1n, bruch2n) DIV bruch1n * bruch1z; bruch1n:= kgv(bruch1n, bruch2n); bruch2z:= kgv(bruch1n, bruch2n) DIV bruch2n * bruch2z; bruch2n:= kgv(bruch1n, bruch2n); END;
(*------------Additionsprozedur-------------- *) PROCEDURE BrAdd(VAR ergebnis : t_bruch; operand1 : t_bruch; operand2 : t_bruch); BEGIN IF operand1.nenner <> operand2.nenner THEN BEGIN ERWEITERN(operand1.zaehler,operand1.nenner, operand2.zaehler, operand2.nenner); END; ergebnis.zaehler := operand1.zaehler + operand2.zaehler; ergebnis.nenner:= operand1.nenner; KUERZEN(ergebnis); END;
(*=========Beginn des Hauptprogramms==========*) VAR bruch: bruchtab; BEGIN Writeln; Writeln(' Geben Sie bitte Ihre Brueche ein:'); Writeln; (* Der Zaehler des 1. Bruches *) Write (' Zaehler1: '); Readln (bruch[1].zaehler); Writeln(' -----'); (* Der Nenner des 1. Bruches *) Write (' Nenner1.: '); Readln (bruch[1].nenner); Kuerzen(bruch[1]); Writeln;Writeln;Writeln; (* Der Zaehler des 1. Bruches *) Write (' Zaehler2: '); Readln (bruch[2].zaehler); Writeln(' -----'); (* Der Nenner des 1. Bruches *) Write (' Nenner2.: '); Readln (bruch[2].nenner); Kuerzen(bruch[2]); Writeln;Writeln; (* Aufruf der Additionsprozedur *) BrAdd(bruch[3],bruch[1], bruch[2]); (* Ausgabe des Ergebnisses *) Writeln(' Das Ergebnis lautet: '); Writeln; Writeln(' ', bruch[3].zaehler); Writeln(' --------------- '); Writeln; Writeln(' ',bruch[3].nenner); Readln; END.
Zurück zur Theorieseite
Zur Anwendung mit Primfaktorenzerlegung
Weiter zu Bruchoperationen
Autor:P.S./E.P.(Gruppe4)
|