PascalABC.NET 3.7:
###RS.AdjacentGroup.SelectMany(x → x.Len >= 3 ? x.Len + x[0] : x.Str).PrПояснение:
RS - ReadString: Возвращает значение типа string, введенное с клавиатуры.
AdjacentGroup: Группирует одинаковые подряд идущие элементы, получая последовательность массивов.
SelectMany: Проецирует каждый элемент последовательности в новую последовательность и объединяет результирующие последовательности в одну последовательность.
.Len - .Length: Длина массива.
.Str - .JoinToString: Преобразует последовательность символов в строку, не используя разделитель (при последовательность другого типа данных в качестве разделителя используется пробел).
.Pr - .Print: Выводит последовательность символов на экран, не используя разделитель (при последовательность другого типа данных в качестве разделителя используется пробел).
Пример работы:
nomer3
program ab;
uses crt
uses sysutils;
var s,s1: string;
i,j: integer;
begin
clrscr;
write('введите строку слово');
writeln;
readln(s);
for i: =1 to length(s) do
for j: =1 to length(s) do
if (s[i]=s[j]) and(i< > j)
then
if pos(s[i], s1)=0
then s1: =s1+s[i]+' ';
write('повторяющиеся символы: ', s1);
readln;
end.
nomer2
program as
uses crt;
var s,sp: string;
i: integer;
begin
clrscr;
write('s=');
readln(s);
sp: ='';
for i: =1 to length(s) do
sp: =s[i]+sp;
if sp=s then writeln ('палиндром')
else writeln ('не палиндром');
readkey
end.
nomer1
function compare(s1,s2: string): boolean;
begin
result: =s1=s2;
end;
var s1,s2: string;
begin
readln(s1);
readln(s2);
if compare(s1,s2) then write('yes')
else write('no')
end.