Найти пересечение множеств - PascalABC.NET
Формулировка задачи:
Задание:
Дано 2 предложения. Составить два множества: первое содержит слова из первого предложения, а второе - из второго предложения. Вывести элементы каждого множества на экран. Найти их пересечение.
Препод сказал, что для работы цикла нужно найти количество вхождений пробелов. Вопрос- как организовать цикл вычленения слов из строки и добавления их во множество?
Решение задачи: «Найти пересечение множеств»
textual
Листинг программы
type mnz=set of string;
procedure mnozestvo(s:string; var m:mnz);
var i:integer;
s1:string;
begin
s:=s+' ';
s1:='';
m:=[];
for i:=1 to length(s) do
if s[i]<>' ' then s1:=s1+s[i]
else
begin
m:=m+[s1];
s1:='';
end;
end;
var s1,s2:string;
m1,m2:mnz;
begin
writeln('Введите первую строку слов');
readln(s1);
mnozestvo(s1,m1);
writeln('Введите вторую строку слов');
readln(s2);
mnozestvo(s2,m2);
writeln('Первое множество');
foreach s: string in m1 do
write(s,' ');
writeln;
writeln('Второе множество');
foreach s: string in m2 do
write(s,' ');
writeln;
m1:=m1*m2;
if m1=[] then write('Пересечение пустое')
else
begin
writeln('Пересечение');
foreach s: string in m1 do
write(s,' ');
end;
end.
Объяснение кода листинга программы
- Тип mnz определен как множество строк (set of string).
- Procedure mnozestvo принимает строку и переменную типа mnz в качестве параметров и возвращает пересечение множеств.
- В процедуре используется цикл for для прохода по каждому символу входной строки.
- Если текущий символ не является пробелом, он добавляется в строку s1.
- Если текущий символ является пробелом, то текущее значение s1 добавляется в множество m, и s1 сбрасывается в пустую строку.
- Два разных множества m1 и m2 создаются с помощью функции mnozestvo.
- В цикле foreach выводятся элементы первого множества m1.
- В цикле foreach выводятся элементы второго множества m2.
- Первое и второе множества объединяются с помощью оператора *= для создания нового множества m1.
- Если m1 пустое, выводится сообщение
Пересечение пустое. - В противном случае выводится сообщение
Пересечениеи элементы пересечения (множества m1) выводятся в цикле foreach.