blikk info infothek forum galerie sitemap

 

Sortiertes Einfügen in einen Array

anfang zurueck weiter ende nach oben
Y. K. Gruppe 1
 

Quellcode

Gruppe      : 1
 
Autor       : Y. K.
 
Schule      : Gewerbeoberschule "Max Valier"
 
Klasse      : 3IA
 
Aufgabe     : Sortieren eines Arrays und einfuegen einer Zahl
 
Beschreibung: Das Programm soll sortiert einfuegen mit
               
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

nach oben