(* Read a text and count the number of words with length 1, 2, ... , 20, and those with length greater than 20. Words are separated by blanks or ends of lines. *) MODULE wordlengths; FROM InOut IMPORT WriteString, WriteLn, WriteCard, OpenInput, Read, Done; VAR i,k: CARDINAL; ch: CHAR; count: ARRAY [1..21] OF CARDINAL; BEGIN OpenInput('TEXT'); FOR i := 1 TO 21 DO count[i] := 0 END; LOOP Read(ch); IF NOT Done THEN EXIT END; IF ('A' <= CAP(ch)) AND (CAP(ch) <= 'Z') THEN k := 0; REPEAT INC(k); Read(ch); UNTIL (CAP(ch)< 'A') OR ('Z' < CAP(ch)); IF k > 20 THEN k := 21 END; INC(count[k]) END END; WriteLn; WriteString(' Length Count'); FOR i := 1 TO 21 DO WriteCard(i,6); WriteCard(count[i],6) END END wordlengths.