37 lines
906 B
Plaintext
37 lines
906 B
Plaintext
MODULE BbtPalindrome;
|
|
IMPORT StdLog;
|
|
|
|
PROCEDURE ReverseStr(str: ARRAY OF CHAR): POINTER TO ARRAY OF CHAR;
|
|
VAR
|
|
top,middle,i: INTEGER;
|
|
c: CHAR;
|
|
rStr: POINTER TO ARRAY OF CHAR;
|
|
BEGIN
|
|
NEW(rStr,LEN(str$) + 1);
|
|
top := LEN(str$) - 1; middle := (top - 1) DIV 2;
|
|
FOR i := 0 TO middle DO
|
|
rStr[i] := str[top - i];
|
|
rStr[top - i] := str[i];
|
|
END;
|
|
IF ODD(LEN(str$)) THEN rStr[middle + 1] := str[middle + 1] END;
|
|
RETURN rStr;
|
|
END ReverseStr;
|
|
|
|
PROCEDURE IsPalindrome(str: ARRAY OF CHAR): BOOLEAN;
|
|
BEGIN
|
|
RETURN str = ReverseStr(str)$;
|
|
END IsPalindrome;
|
|
|
|
PROCEDURE Do*;
|
|
VAR
|
|
x: CHAR;
|
|
BEGIN
|
|
StdLog.String("'salalas' is palindrome?:> ");
|
|
StdLog.Bool(IsPalindrome("salalas"));StdLog.Ln;
|
|
StdLog.String("'madamimadam' is palindrome?:> ");
|
|
StdLog.Bool(IsPalindrome("madamimadam"));StdLog.Ln;
|
|
StdLog.String("'abcbda' is palindrome?:> ");
|
|
StdLog.Bool(IsPalindrome("abcbda"));StdLog.Ln;
|
|
END Do;
|
|
END BbtPalindrome.
|