49 lines
1.0 KiB
Plaintext
49 lines
1.0 KiB
Plaintext
MODULE BbtPangramChecker;
|
|
IMPORT StdLog,DevCommanders,TextMappers;
|
|
|
|
PROCEDURE Check(str: ARRAY OF CHAR): BOOLEAN;
|
|
CONST
|
|
letters = 26;
|
|
VAR
|
|
i,j: INTEGER;
|
|
status: ARRAY letters OF BOOLEAN;
|
|
resp : BOOLEAN;
|
|
BEGIN
|
|
FOR i := 0 TO LEN(status) -1 DO status[i] := FALSE END;
|
|
|
|
FOR i := 0 TO LEN(str) - 1 DO
|
|
j := ORD(CAP(str[i])) - ORD('A');
|
|
IF (0 <= j) & (25 >= j) & ~status[j] THEN status[j] := TRUE END
|
|
END;
|
|
|
|
resp := TRUE;
|
|
FOR i := 0 TO LEN(status) - 1 DO;
|
|
resp := resp & status[i]
|
|
END;
|
|
RETURN resp;
|
|
END Check;
|
|
|
|
PROCEDURE Do*;
|
|
VAR
|
|
params: DevCommanders.Par;
|
|
s: TextMappers.Scanner;
|
|
BEGIN
|
|
params := DevCommanders.par;
|
|
s.ConnectTo(params.text);
|
|
s.SetPos(params.beg);
|
|
s.Scan;
|
|
WHILE (~s.rider.eot) DO
|
|
IF (s.type = TextMappers.char) & (s.char = '~') THEN
|
|
RETURN
|
|
ELSIF (s.type # TextMappers.string) THEN
|
|
StdLog.String("Invalid parameter");StdLog.Ln
|
|
ELSE
|
|
StdLog.Char("'");StdLog.String(s.string + "' is pangram?:> ");
|
|
StdLog.Bool(Check(s.string));StdLog.Ln
|
|
END;
|
|
s.Scan
|
|
END
|
|
END Do;
|
|
|
|
END BbtPangramChecker.
|