|
|
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: 4352 (0x1100)
Types: TextFile
Names: »ORDHYP.PAS«
└─⟦08ea08c61⟧ Bits:30003924 PolyPascal programmer
└─⟦this⟧ »ORDHYP.PAS«
└─⟦09235ab48⟧ Bits:30003065 Demoprogrammer K-Z til Pascal bog
└─⟦this⟧ »ORDHYP.PAS«
PROGRAM ordhyp;
CONST
maxordlaengde = 20;
bogstaver : SET OF CHAR = (.'A' .. 'Å', 'a' .. 'å'.);
TYPE
ordtype = STRING(.maxordlaengde.);
pointer = ^ post;
post = RECORD
venstre, hoejre : pointer;
ord_ : ordtype;
ordtaeller : INTEGER;
END;
VAR
ordtrae : pointer;
naesteord : ordtype;
filnavn : STRING(.14.);
indfil : TEXT;
PROCEDURE laesord(VAR streng : ordtype);
VAR
taeller : 0 .. maxordlaengde;
ch : CHAR;
FUNCTION smaabogstaver(streng : ordtype) : ordtype;
VAR
t : 1 .. maxordlaengde;
s : ordtype;
BEGIN (* smaabogstaver *)
s := '';
FOR t := 1 TO LEN(streng) DO
IF (streng(.t.) >= 'A') AND (streng(.t.) <= 'Å')
THEN s := s + CHR(ORD(streng(.t.)) + 32)
ELSE s := s + streng(.t.);
smaabogstaver := s;
END; (* smaabogstaver *)
BEGIN (* laesord *)
IF NOT EOF(indfil)
THEN
REPEAT
READ(indfil, ch);
UNTIL EOF(indfil) OR (ch IN bogstaver);
streng := '';
IF NOT EOF(indfil)
THEN
BEGIN
taeller := 0;
WHILE ch IN bogstaver DO
BEGIN
IF taeller < maxordlaengde
THEN
BEGIN
taeller := taeller + 1;
streng := streng + ch;
END;
IF NOT EOF(indfil)
THEN READ(indfil, ch)
ELSE ch := ' ';
END;
END;
streng := smaabogstaver(streng);
END; (* laesord *)
PROCEDURE gemord(VAR trae : pointer; streng : ordtype);
BEGIN (* gemord *)
IF trae = NIL
THEN
BEGIN
NEW(trae);
WITH trae^ DO
BEGIN
venstre := NIL;
hoejre := NIL;
ord_ := streng;
ordtaeller := 1;
END;
END
ELSE
WITH trae^ DO
IF streng < ord_
THEN gemord(venstre, streng)
ELSE IF streng > ord_
THEN gemord(hoejre, streng)
ELSE
ordtaeller := ordtaeller + 1;
END; (* gemord *)
PROCEDURE skrivord(trae : pointer);
BEGIN (* skrivord *)
IF trae <> NIL
THEN
WITH trae^ DO
BEGIN
skrivord(venstre);
WRITELN(ordtaeller : 4, ' ', ord_);
skrivord(hoejre);
END;
END; (* skrivord *)
BEGIN (* ordhyp *)
WRITE(CLRHOM);
ordtrae := NIL;
WRITE('Hvilken fil skal optaelles: ');
BUFLEN := 14;
READLN(filnavn);
ASSIGN(indfil, filnavn);
RESET(indfil);
WHILE NOT EOF(indfil) DO
BEGIN
laesord(naesteord);
IF NOT EOF(indfil)
THEN gemord(ordtrae, naesteord);
END;
CLOSE(indfil);
WRITELN;
WRITELN('Hyppighedsfordeling af ordene i filen: ', filnavn);
WRITELN;
WRITELN('HYPPIGHED ORD');
WRITELN;
skrivord(ordtrae);
END. (* ordhyp *)
«eof»