|
|
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 - metrics - download
Length: 4096 (0x1000)
Types: TextFile
Names: »BINTRAE1.PAS«
└─⟦08ea08c61⟧ Bits:30003924 PolyPascal programmer
└─⟦this⟧ »BINTRAE1.PAS«
└─⟦092727b26⟧ Bits:30005927 Demoprogrammer til Pascal bog (Jet-80)
└─⟦this⟧ »BINTRAE1.PAS«
└─⟦3702e543b⟧ Bits:30003064 Demoprogrammer A-J til Pascal bog
└─⟦this⟧ »BINTRAE1.PAS«
PROGRAM bintrae1;
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;
BEGIN (* find *)
IF trae = NIL
THEN find := NIL
ELSE
WITH trae^ DO
IF soegeord < data
THEN find := find(venstre, soegeord)
ELSE IF soegeord > data
THEN find := find(hoejre, soegeord)
ELSE find := trae;
END; (* find *)
BEGIN (* bintrae1 *)
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. (* bintrae1 *)
«eof»