RosettaCodeData/Task/Ordered-words/Action-/ordered-words.action
2023-07-01 13:44:08 -04:00

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