57 lines
901 B
Text
57 lines
901 B
Text
CHAR ARRAY line(256)
|
|
|
|
BYTE FUNC IsOrderedWord(CHAR ARRAY word)
|
|
BYTE len,i
|
|
|
|
len=word(0)
|
|
IF len<=1 THEN RETURN (1) FI
|
|
|
|
FOR i=1 TO len-1
|
|
DO
|
|
IF word(i)>word(i+1) THEN
|
|
RETURN (0)
|
|
FI
|
|
OD
|
|
RETURN (1)
|
|
|
|
BYTE FUNC FindLongestOrdered(CHAR ARRAY fname)
|
|
BYTE max,dev=[1]
|
|
|
|
max=0
|
|
Close(dev)
|
|
Open(dev,fname,4)
|
|
WHILE Eof(dev)=0
|
|
DO
|
|
InputSD(dev,line)
|
|
IF line(0)>max AND IsOrderedWord(line)=1 THEN
|
|
max=line(0)
|
|
FI
|
|
OD
|
|
Close(dev)
|
|
RETURN (max)
|
|
|
|
PROC FindWords(CHAR ARRAY fname BYTE n)
|
|
BYTE count,dev=[1]
|
|
|
|
Close(dev)
|
|
Open(dev,fname,4)
|
|
WHILE Eof(dev)=0
|
|
DO
|
|
InputSD(dev,line)
|
|
IF line(0)=n AND IsOrderedWord(line)=1 THEN
|
|
Print(line) Put(32)
|
|
FI
|
|
OD
|
|
Close(dev)
|
|
RETURN
|
|
|
|
PROC Main()
|
|
CHAR ARRAY fname="H6:UNIXDICT.TXT"
|
|
BYTE max
|
|
|
|
PrintE("Finding the longest words...")
|
|
PutE()
|
|
max=FindLongestOrdered(fname)
|
|
|
|
FindWords(fname,max)
|
|
RETURN
|