program Project1;
const
//Множество разделителей слов.
D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
//Множество согласных букв.
Da = [
//Кириллица.
'Б', 'В', 'Г', 'Д', 'Й', 'Ж', 'З', 'К', 'Л', 'М', 'Н', 'П',
'Р', 'С', 'Т', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ',
'б', 'в', 'г', 'д', 'й', 'ж', 'з', 'к', 'л', 'м', 'н', 'п',
'р', 'с', 'т', 'ф', 'х', 'ц', 'ч', 'ш', 'щ',
//Латиница.
'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P',
'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Z',
'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p',
'q', 'r', 's', 't', 'v', 'w', 'x', 'z'
];
var
S : String;
i, j, Len : Integer;
Ch : Char;
Dt, Dw : set of Char;
begin
repeat
Writeln('Задайте строку:');
Readln(S);
//Множество согласных букв, которые участвуют во всех словах.
Dt := [];
//Множество согласных букв, которые участвуют в отдельном слове.
Dw := [];
Len := Length(S);
j := 0;
for i := 1 to Len do begin
//Пропускаем разделители.
if S[i] in D then Continue;
//Составляем множество из согласных букв очередного слова.
if S[i] in Da then Dw := Dw + [ S[i] ];
//Отслеживаем конец слова.
if (i = Len) or (S[i + 1] in D) then begin
Inc(j);
if j = 1 then Dt := Dw
else Dt := Dt * Dw;
Dw := [];
end;
end;
Writeln('Перечень согласных букв, которые участвуют в каждом слове:');
if Dt = [] then
Writeln('Таких букв нет.')
else begin
i := 0;
for Ch := #0 to #255 do begin
if Ch in Dt then begin
Inc(i);
if i > 1 then Write(', ');
Write(Ch);
end;
end;
Writeln;
end;
Writeln('Повторить - Enter, выход - любой символ + Enter.');
Readln(S);
until S <> '';
end.