ABC words: Difference between revisions

Content added Content deleted
m (omit)
(Add Modula-2)
Line 1,426: Line 1,426:
end
end
end</lang>
end</lang>

=={{header|Modula-2}}==
<lang modula2>MODULE ABCWords;
IMPORT SeqIO;
IMPORT Texts;
FROM InOut IMPORT WriteString, WriteLn;
FROM Strings IMPORT Pos;

VAR file: SeqIO.FILE;
dict: Texts.TEXT;
word: ARRAY [0..63] OF CHAR;
fs: SeqIO.FileState;
ts: Texts.TextState;
PROCEDURE IsABCWord(word: ARRAY OF CHAR): BOOLEAN;
VAR a, b, c, missing: CARDINAL;
BEGIN
missing := Pos("", word);
a := Pos("a", word);
b := Pos("b", word);
c := Pos("c", word);
RETURN (a # missing)
AND (b # missing)
AND (c # missing)
AND (a < b)
AND (b < c);
END IsABCWord;

BEGIN
fs := SeqIO.Open(file, "unixdict.txt");
ts := Texts.Connect(dict, file);
WHILE NOT Texts.EOT(dict) DO
Texts.ReadLn(dict, word);
IF IsABCWord(word) THEN
WriteString(word);
WriteLn();
END;
END;
ts := Texts.Disconnect(dict);
fs := SeqIO.Close(file);
END ABCWords.</lang>
{{out}}
<pre style='height:50ex;'>aback
abacus
abc
abdicate
abduct
abeyance
abject
abreact
abscess
abscissa
abscissae
absence
abstract
abstracter
abstractor
adiabatic
aerobacter
aerobic
albacore
alberich
albrecht
algebraic
alphabetic
ambiance
ambuscade
aminobenzoic
anaerobic
arabic
athabascan
auerbach
diabetic
diabolic
drawback
fabric
fabricate
flashback
halfback
iambic
lampblack
leatherback
metabolic
nabisco
paperback
parabolic
playback
prefabricate
quarterback
razorback
roadblock
sabbatical
snapback
strabismic
syllabic
tabernacle
tablecloth</pre>


=={{header|Nim}}==
=={{header|Nim}}==