42 lines
1.1 KiB
Text
42 lines
1.1 KiB
Text
MODULE Pangrams;
|
|
FROM InOut IMPORT WriteString, WriteLn;
|
|
FROM Strings IMPORT Length;
|
|
|
|
(* Check if a string is a pangram *)
|
|
PROCEDURE pangram(s: ARRAY OF CHAR): BOOLEAN;
|
|
VAR letters: ARRAY [0..25] OF BOOLEAN;
|
|
i: CARDINAL;
|
|
BEGIN
|
|
FOR i := 0 TO 25 DO letters[i] := FALSE; END;
|
|
FOR i := 0 TO Length(s)-1 DO
|
|
IF (s[i] >= 'A') AND (s[i] <= 'Z') THEN
|
|
letters[ORD(s[i]) - ORD('A')] := TRUE;
|
|
ELSIF (s[i] >= 'a') AND (s[i] <= 'z') THEN
|
|
letters[ORD(s[i]) - ORD('a')] := TRUE;
|
|
END;
|
|
END;
|
|
FOR i := 0 TO 25 DO
|
|
IF NOT letters[i] THEN
|
|
RETURN FALSE;
|
|
END;
|
|
END;
|
|
RETURN TRUE;
|
|
END pangram;
|
|
|
|
PROCEDURE example(s: ARRAY OF CHAR);
|
|
BEGIN
|
|
WriteString("'");
|
|
WriteString(s);
|
|
WriteString("' is ");
|
|
IF NOT pangram(s) THEN
|
|
WriteString("not ");
|
|
END;
|
|
WriteString("a pangram.");
|
|
WriteLn();
|
|
END example;
|
|
|
|
BEGIN
|
|
example("The quick brown fox jumps over the lazy dog");
|
|
example("The five boxing wizards dump quickly");
|
|
example("abcdefghijklmnopqrstuvwxyz");
|
|
END Pangrams.
|