Дан текст на русском языке. Напечатать в алфавитном порядке все глухие согласные буквы, которые не входят хотя бы в одно слово — Pascal(Паскаль)

{Дан текст на русском языке. Напечатать в алфавитном порядке
 все глухие согласные буквы, которые не входят хотя бы в одно слово}

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.

Leave a Comment

+ 14 = 22