Исходный текст вводится пользователем с экрана в виде одной или нескольких строк. На экране необходимо сохранить протокол работы: исходный и преобразованный текст. В исходном тексте выделить цветом заданные фрагменты (фразы - которые являются палиндромом). Определить, является ли строка текста палиндромом, т.е. читаемой в прямом и обратном направлении (например, строка «А роза упала на лапу Азора» - палиндром). При проверке строки убрать из нее все знаки препинания.
это наработка
Код: Выделить всё
program task03;
uses WinCRT;
var Str: string;
function IsPalindrom(instr:string):boolean;
const trash : set of char = [' ','.',',','!','?'];
var left:string;
i,Len:integer;
ch:char;
Pal:boolean;
begin
Pal := true;
left:='';
for i:=1 to Length(instr) do
begin
ch := instr[i];
if ch in trash then else
begin
left:=left+Upcase(ch);
end;
end;
Len := Length(left);
for i:=Len downto 1 do
begin
if left[i]<>left[Len-i+1] then
Pal := false;
end;
IsPalindrom := Pal;
end;
Begin
write('Enter string:');read(Str);
if IsPalindrom(Str) then
writeln('Eto palindrom')
else
writeln('Eto fignya kakaya-to');
End.
Мне посоветовали
Код: Выделить всё
function UpCaseRus(ch:char):char;
begin
case ch of
'а':UpCaseRus:='A';
'б':UpCaseRus:='Б';
...
'я':UpcaseRus:='Я';
end;
end;
Вопрос №2 - Нужно чтобы появлялся Конечный результат (то есть я вижу первоначальный текст, а ниже появляется результат) в цвете если палиндром (само предложение) или фраза "нет палиндромов".
Вопрос №3 Нужна возможность ввода 3 -4 или n-го кол-ва строк сразу. и чтобы прога обрабатывала эти строки отдельно (1, 2 ,3 строка... и т.д.).
