schieben der Elemente }
PROGRAM einfueg;
USES Crt;
TYPE
ttab = ARRAY [1..50] OF INTEGER;
{ Ausgabe Prozedur }
PROCEDURE ausgabe(tab: ttab;
anz: INTEGER);
VAR
i :INTEGER;
BEGIN
FOR i := 1 TO anz DO
Write(tab[i],' ');
END; { Ende der Prozedur }
{ Prozedur zum Einfuegen }
PROCEDURE einfuegen (VAR tab : ttab;
einfzahl: INTEGER;
VAR anz : INTEGER );
VAR
i, j : INTEGER;
gef : BOOLEAN;
BEGIN
{ Initialisierung }
i := 0;
gef := FALSE;
WHILE NOT gef DO BEGIN
i := i + 1;
{ Pruefung ob Wert eingefuegt wird }
IF (einfzahl <= tab[i]) OR (i > anz) THEN BEGIN
gef := TRUE;
{ Verschiebung der bereits vorhandenen Zahlen }
FOR j := anz DOWNTO i DO
tab[j+1] := tab[j];
{ Einfuegen des Wertes }
anz := anz + 1;
tab[i] := einfzahl;
END; { Ende If }
END; { Ende While }
END; { Ende der Prozedur }
{ Hauptprogramm }
VAR
n, i, anz, einfzahl: INTEGER;
tab : ttab;
BEGIN
ClrScr;
anz := 0;
REPEAT
Writeln;
Write('Geben Sie die Einfuegezahl ein (Ende mit 0, Max 30 Werte): ');
Readln(einfzahl);
Writeln;
IF einfzahl <> 0 THEN BEGIN
einfuegen(tab, einfzahl,anz);
ausgabe(tab,anz);
Writeln;
END; {Ende If }
UNTIL einfzahl = 0; { Bedingung fuer Ende der Repeatschleife }
Readln;
END. {Programmende }
Zum Pseudocode
Zur Theorieseite