| 
         
         
          |  | Last In First Out in Pascal |  |  |  |  |  |  |  |  |  |  |  |  
				 
					|  | 
							 
								|  |  |  |   
								|  | 
										 
											|  |  |  |  |  |  |   
												 | (* Name    : Gruppe 3 (A.M. , A.P.)
 Datum   : 07.02.2007
 Klasse  : 3Ia
 Aufgabe : Stapel-Operationen (LIFO)
 Lizenz  : GNU/GPL
 *)
 PROGRAM LIFO;
 USES
 Crt;
 CONST
 maxanz = 4;
 f      = 8;
 TYPE
 Tspeicher = STRING[f];
 Tstapel = ARRAY[1..maxanz] OF Tspeicher;
 
 PROCEDURE Enqueue(VAR stapel: Tstapel; x: Tspeicher;
 VAR anz: INTEGER;VAR voll: BOOLEAN);
 BEGIN
 IF anz>=maxanz THEN
 voll:=TRUE
 ELSE BEGIN
 voll:=FALSE;
 anz:=anz+1;
 stapel[anz]:= x;
 END
 END;
 
 PROCEDURE Dequeue(stapel: Tstapel;VAR y: Tspeicher;
 VAR anz : INTEGER;VAR leer : BOOLEAN);
 BEGIN
 IF anz<=0 THEN
 leer:=TRUE
 ELSE BEGIN
 leer:=FALSE;
 y:=stapel[anz];
 anz:=anz-1
 END
 END;
 
 PROCEDURE Ausgeben(stapel : Tstapel; anz : INTEGER);
 VAR
 i : INTEGER;
 BEGIN
 IF anz>=1 THEN BEGIN
 (* Erste Zeile -> Indices *)
 Write('  Indices: ');
 FOR i:=1 TO maxanz DO
 Write(i:f,'|');
 Writeln;
 (* Zweite Zeile -> Werte *)
 Write('           ');
 FOR i:=1 TO maxanz DO
 IF i<=anz THEN
 Write((stapel[i]):f, '|')
 ELSE
 Write('|':9);
 Writeln;
 Writeln
 END
 ELSE
 Writeln('  Der Stapel ist leer!');
 Writeln
 END;
 
 (* Hauptprogramm *)
 VAR
 stapel         : Tstapel;
 anz, ausw      : INTEGER;
 wert           : Tspeicher;
 voll,leer,ende : BOOLEAN;
 BEGIN
 ClrScr;
 (* Initialisieren *)
 anz  :=0;
 voll :=FALSE;
 leer :=TRUE;
 ende :=FALSE;
 WHILE NOT(ende) DO BEGIN
 ClrScr;
 Writeln(' -------------- Menu ----------------');
 Writeln(' Element hinzufuegen ............ (1)');
 Writeln(' Element lesen .................. (2)');
 Writeln(' Stapel ausgeben ................ (3)');
 Writeln(' Beenden ........................ (4)');
 Write  ('                                   ');
 Readln(ausw);
 Writeln(' ------------------------------------');
 CASE ausw OF
 1 : BEGIN
 IF NOT(voll) THEN BEGIN
 IF anz+1>maxanz THEN
 Writeln('  Stapel ist voll!')
 ELSE BEGIN
 Write('  Bitte Element eingeben: ');
 Readln(wert);
 Enqueue(stapel,wert,anz,voll);
 Writeln('  Element wurde eingefuegt!');
 leer:=FALSE (* Wenn element eingefuegt, leer=FALSE *)
 END
 END
 ELSE
 Writeln('  Stapel ist voll!');
 Writeln
 END;
 2 : BEGIN
 Dequeue(stapel,wert,anz,leer);
 IF Not(leer) THEN BEGIN
 Writeln('  "',wert, '" wurde berarbeitet und entfernt.')
 END
 ELSE
 Writeln('  Stapel ist leer!');
 Writeln
 END;
 3 : Ausgeben(stapel,anz);
 4 : ende:=TRUE;
 ELSE Writeln('Falsche Eingabe')
 END;
 Readln
 END
 END.
 
 Autoren: A.M. ; A.P.
 Datum  : 07.02.2007
 |  |  |   
								|  |  |  |  |  |  
         
          |  | Letzte Änderung: 09.02.2007 © Pädagogisches Institut für die deutsche Sprachgruppe 
            - Bozen. 2000 -
 |  |  |  |  |  |  |  |  |