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

uses crt;
type mnoz=set of char;
procedure Mnozestvo(s:string;var m:mnoz);{создание множества из слова}
var i:byte;
begin
m:=[];
for i:=1 to length(s) do
m:=m+[s[i]];{все буквы заносим в множество}
end;
var s,s1:string;
    m1,mi,m:mnoz;
    i,k:byte;
begin
clrscr;
writeln('Введите предложение:');
readln(s);
s:=s+' ';{добавим пробел}
{удалим лишние пробелы}
while pos('  ',s)>0 do {пока есть 2 пробела рядом}
delete(s, pos('  ',s),1);{один удаляем, в апостофах обязательно по 2 пробела, если 1, все сольется}
s1:=copy(s,1,pos(' ',s));{берем первое слово}
Mnozestvo(s1,m1);{делаем множество по условию}
delete(s,1,pos(' ',s));{удаляем слово}
k:=0;
while pos(' ',s)>0 do{пока есть пробелы}
 begin
  s1:=copy(s,1,pos(' ',s)-1);{копируем первое слово}
  Mnozestvo(s1,mi);{делаем множество}
  m:=mi-m1;
  if m=mi {если разность множеств=исходному, букв нет}
  then
   begin
    write(s1,' ');
    k:=1;
   end;
  delete(s,1,pos(' ',s));{удаляем слово, следующее первое}
 end;
if k=0 then write('Таких слов нет.');
readln
end.

Leave a Comment

+ 89 = 90