|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 4224 (0x1080) Types: TextFile Names: »BINTRAE2.PAS«
└─⟦08ea08c61⟧ Bits:30003924 PolyPascal programmer └─ ⟦this⟧ »BINTRAE2.PAS« └─⟦092727b26⟧ Bits:30005927 Demoprogrammer til Pascal bog (Jet-80) └─ ⟦this⟧ »BINTRAE2.PAS« └─⟦3702e543b⟧ Bits:30003064 Demoprogrammer A-J til Pascal bog └─ ⟦this⟧ »BINTRAE2.PAS« └─⟦f983c2ef3⟧ Bits:30004681 Pascal opgaver (Butler) └─ ⟦this⟧ »BINTRAE2.PAS«
PROGRAM bintrae2; TYPE str30 = STRING(.30.); pointer = ^ knude; knude = RECORD venstre, hoejre : pointer; data : str30; END; VAR rod : pointer; ord_ : str30; ch : CHAR; PROCEDURE indsaet(VAR trae : pointer; nytord : str30); VAR ch : CHAR; BEGIN (* indsaet *) IF trae = NIL THEN (* opret ny forgrening *) BEGIN NEW(trae); WITH trae^ DO BEGIN venstre := NIL; hoejre := NIL; data := nytord; END END ELSE WITH trae^ DO IF nytord < data (* Søg i venstre forgrening *) THEN indsaet(venstre, nytord) ELSE IF nytord > data (* Søg i højre forgrening *) THEN indsaet(hoejre, nytord) ELSE BEGIN WRITELN(nytord, ' findes i forvejen'); WRITE('Tast <RETURN>'); READLN(ch); END; END; (* indsaet *) PROCEDURE udskriv(rod : pointer); BEGIN (* udskriv *) IF rod <> NIL THEN WITH rod^ DO BEGIN udskriv(venstre); WRITELN(data); udskriv(hoejre); END; END; (* udskriv *) FUNCTION find(trae : pointer; soegeord : str30) : pointer; VAR slut : BOOLEAN; BEGIN (* find *) slut :=FALSE; REPEAT IF trae = NIL THEN slut := TRUE ELSE WITH trae^ DO IF soegeord < data THEN trae := venstre ELSE IF soegeord > data THEN trae := hoejre ELSE slut := TRUE; UNTIL slut; find := trae; END; (* find *) BEGIN (* bintrae2 *) WRITE(CLRHOM); rod := NIL; REPEAT WRITE(CLRHOM); WRITELN(' I. Indsæt ord'); WRITELN; WRITELN(' U. Udskriv'); WRITELN; WRITELN(' F. Find ord'); WRITELN; WRITELN(' A. Afslut'); REPEAT READ(KBD, ch) UNTIL ch IN (.'I', 'i', 'U', 'u', 'F', 'f', 'A', 'a'.); CASE ch OF 'I', 'i' : BEGIN WRITE('Tast ord: '); READLN(ord_); IF ord_ <> '' THEN indsaet(rod, ord_); END; 'U', 'u' : BEGIN WRITELN; WRITELN('De indtastede ord :'); WRITELN; udskriv(rod); WRITE('Tast <RETURN>'); READLN(ch); END; 'F', 'f' : BEGIN WRITE('Hvilket ord skal søges: '); READLN(ord_); IF find(rod, ord_) <> NIL THEN WRITELN(ord_, ' findes') ELSE WRITELN(ord_, ' findes ikke'); WRITE('Tast <RETURN>'); READLN(ch); END; END; UNTIL ch IN (.'A', 'a'.); END. (* bintrae2 *) «eof»