|
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: 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« └─⟦f983c2ef3⟧ Bits:30004681 Pascal opgaver (Butler) └─ ⟦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»