Struktogramm:
Programmcode:
(* Schule : Gewerbeoberschule "Max Valier" Bozen Klasse : 3Ia Author : P.S./E.P.(Gruppe 4) Lizenz : GPL *)
PROGRAM primfktz; USES Crt; CONST max = 100; (* Tabellenmaximum *)
TYPE t_primf = RECORD fakt : LONGINT; (* Primfaktor *) expo : LONGINT; (* Exponent *) END; (* Verbundarray *) t_primtab = ARRAY[1..max] OF t_primf;
(* Prozedur zum Errechnen der Primzahlfaktoren, mit gleichzeitigem Errechnen des Exponenten *) PROCEDURE Primfakt( zahl : LONGINT; VAR zprim : t_primtab; VAR i : LONGINT ); VAR pzahl : LONGINT; (* die zu zerlegende Zahl *) prim : LONGINT; (* Primzahl *) fakt : LONGINT; (* Primfaktor *) expo : LONGINT; (* Exponent *)
BEGIN pzahl :=zahl; prim :=2; (* 2 ist die erste Primzahl *) expo :=0; (* Am Anfang ist der Exponent 0 *) i :=0; (* Wenn Zahl 1 = Abbruch *) WHILE pzahl > 1 DO BEGIN (* Division durch die Primzahl ohne Rest *) IF (pzahl MOD prim) = 0 THEN BEGIN WHILE (pzahl MOD prim) = 0 DO BEGIN pzahl := pzahl DIV prim; expo := expo + 1; END END ELSE BEGIN expo := 0; prim := prim + 1; END; IF expo <> 0 THEN BEGIN i := i + 1; zprim[i].expo := expo; zprim[i].fakt := prim END END END;
(*=================Hauptprogramm===================*) VAR zahl, i, k, j : LONGINT; fakt : t_primtab; anz : LONGINT;
BEGIN Clrscr; Write('Geben sie eine Zahl ein, die Sie in '); Writeln('Faktoren zerlegen moechten: '); Readln(zahl); Write('Wenn man die Primzahl ',zahl,' zerlegt '); Write('erhaelt man die Primfaktoren zu der '); Writeln('Potenz: '); Primfakt(zahl,fakt,anz); Write('Faktor: '); FOR i := 1 TO anz DO BEGIN IF fakt[i].expo <> 0 THEN Write(fakt[i].fakt:6); END; Writeln; Write('Exponent: '); FOR i:=1 TO anz DO IF fakt[i].expo <> 0 THEN BEGIN j := j + 1; Write(fakt[i].expo:6) END; Writeln; Write('Index: '); FOR k:=1 TO j DO Write(k:6); Readln; END.
Andere Anwendungen zu ARRAYS
Author P.S./E.P. (Gruppe 4)
|