1. Введення слова-зразка.
2. Створення множини символів із літер слова-зразка.
3. Введення рядка слів.
4. Поки не кінець рядка слів
4.1.Створення множини символів із літер поточного слова;
4.2.Якщо множини символів слова-зразка і поточного слова співпадають, друкується поточне слово;
4.3.Множині символів поточного слова присвоюється порожнє значення;
4.4.Повторити дії пункту 4.
5. Кінець.
type charset=set of char; { Тип множина }
var s,p:charset; { Множини літер}
st:string; str:string; {задане слово і рядок символів }
c,i,j:integer; { Робочі змінні}
begin
s:=[]; {множина символів рядка порожнє}
с:=0; {кількість літер в слові}
р:=[]; {множина символів , що є словом, порожня} writeln(Введіть слово - зразок:'); readln(st);
for i:=1 to length(st) do s:=s+[st[i]]; {множина символів слова-зразка} writeln('Введіть послідовність слів:'); readln(str);
writeln('Лаб. роб.');
writeln('Bapiaнт N30, виконав студент ');
writeln('Задане слово - зразок:'); writeln(st);
writeln('Задана послідовність слів:'); writeln(str);
writeln('Cловa, якi можуть бути отримані із зразка шляхом');
writeln('переставляння його літер:');
for i:=1 to length(str) do
begin if (str[i]<>' ') then {якщо символ не пробіл}
begin
p:=p+[str[i]j; { створення слова}
с:=с+1; {лічильник літер в слові}
end
else begin {якщо є пробіл}
if p=s {якщо множини літер слова-зразка та поточного слова співпадають}
then begin
for j:=i-c to і do write(str[j]); { друкується поточне слово} writeln(‘ ');
end;
c:=0; {рахунок літер для нового слова}
р:=[]; {множина для нового поточного слова}
end; {кінець else}
end; {кінець циклу по і}
end.