|
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 -
|
|
|
|
 |
|
|
|
|