{Дан текст на русском языке. Напечатать в алфавитном порядке
все глухие согласные буквы, которые не входят хотя бы в одно слово}
program 2;
const r=ord('а')-ord('А');
var m:set of 'а'..'я';
sl:array[1..50] of string;
s:string;
i,k,l:integer;
c:char;
begin m:=['к','п','с','т','ф','х','ш','щ'];
write('введите текст на русском языке:');
readln(s);
writeln('Вот эти буквы:');
for c:='а' to 'я' do if c in m then write(c);
writeln
end.
Следующий вариант
uses crt;
const
gl=['к','п','с','т','ф','х','ц','ч','ш','щ','К','П','С','Т','Ф','Х','Ц','Ч','Ш','Щ'];{глухие согласные}
bk:string='КкПпСсТтФфХхЦцЧчШшЩщ';
type mnoz=set of char;
var s,s1:string;
m:array[1..100] of mnoz;{массив множеств}
mn,mn1:mnoz;
n,i,j:byte;
begin
clrscr;
repeat
writeln('Введите текст на русском языке, между словами пробелы:');
readln(s);
if pos(' ',s)=0 then
writeln('В предложении только одно слово. Повторите ввод.');
until pos(' ',s)>0;
s:=s+' ';{добавим пробел в конец}
n:=0;
while pos(' ',s)>0 do{создаем массив множеств}
begin
s1:=copy(s,1,pos(' ',s)-1);{копируем очередное слово}
n:=n+1;{считаем}
m[n]:=[];{создаем множество}
for j:=1 to length(s1) do
if s1[j] in gl then m[n]:=m[n]+[s1[j]];{из его букв по условию}
delete(s,1,pos(' ',s));{удаляем это слово}
end;
mn1:=[];{множество букв, не входящих только в одно число}
for i:=1 to n do{для каждого множества }
begin
mn:=[];
for j:=1 to n do
if j<>i then mn:=mn+m[j];{делаем множество из букв, котoрые входят в другие числа}
mn1:=mn1+(m[i]*mn);{добавляем буквы, которые есть и в других словах}
end;
if mn1=[] then writeln('Букв, которые не входят только в одно слово, нет!')
else
begin
writeln('Буквы, которые не входят только в одно слово:');
for i:=1 to length(bk) do{идем по алфавиту,
если буква есть в строке, но ее нет в котором по разу, выводим}
if (bk[i] in mn1) then write(bk[i],' ');
end;
readln
end.
Следующий вариант
Program mn_4;
uses crt;
type
let = ' а' .. 'я';
var
sogl: set of let;
text: set of char;
c: char;
s: string;
i: byte;
begin
writeln('введите текст, заканчивающийся точкой');
readln(s);
if s[length(s)] <> '.' then
s := s + '.';
text := [];
sogl := ['п', 'ф', 'х', 'т', 'с', 'к', 'ч', 'ш', 'щ', 'ц'];
repeat
if s[i] in sogl then
text := text + [s[i]];
i := i + 1;
until s[i] = '.';
for c := 'a' to 'я' do
if c in sogl - text then
write(c);
readln;
end.