Pas.0017. Напишите программу, которая определяет, является ли заданная строка супер мягким палиндромом. Пробелы, точки, запятые, тире не учитываются при определении палиндромности строки.
Сначала см. CS.0016.
Решение.program SuperLitePalindromeString;
const
TESTED_STRING = 'Я дядя, я дядя, я дядя, я дядя, я дядя, ...';
var
left, right : integer;
testedString, isPalindromeString : string;
function isSkippedChar(c : char) : boolean;
var
skippedChars : string = ' .,—';
i : integer;
isSkipped : boolean = false;
begin
i := 1;
while (i <= length(skippedChars)) and (not isSkipped) do
begin
isSkipped := (c = skippedChars[i]);
i := i + 1;
end;
isSkippedChar := isSkipped;
end;
begin
testedString := TESTED_STRING;
left := 1;
right := length(testedString);
isPalindromeString := '';
while (left < right) and (isPalindromeString = '') do
begin
if isSkippedChar(testedString[left]) then
left := left + 1
else if isSkippedChar(testedString[right]) then
right := right - 1
else if upcase(testedString[left]) <>
upcase(testedString[right]) then
isPalindromeString := 'не 'else
begin
left := left + 1;
right := right - 1
end
end;
writeln('Строка «' + testedString + '» ');
write(isPalindromeString + 'является супермягким палиндромом.');
end.
Консоль.Строка «Я дядя, я дядя, я дядя, я дядя, я дядя, ...» является супермягким палиндромом.