blikk info infothek forum galerie sitemap

Bruchaddition

anfang zurueck weiter ende nach oben

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)

 


 

nach oben

Gemäß der Verordnung (EU) 2016/679 des Europäischen Parlaments und des Rates vom 27. April 2016 teilen wir mit, dass diese Webseite eigene technische Cookies und Cookies Dritter verwendet, damit Sie effizient navigieren und die Funktionen der Webseite einwandfrei nutzen können.

Cookie-Einstellungen ändernCookies annehmen