Вывести в алфавитном порядке буквы, входящие одновременно во все множества - Pascal
Формулировка задачи:
Пусть D1, D3, D5, D7 – множества, составленные из букв, входящих в
названия нечетных дней недели. Вывести в алфавитном порядке:
а) буквы, входящие одновременно во все множества;
б) буквы, входящие одновременно в названия и первого, и пятого дня
недели;
в) буквы, входящие хотя бы в одно множество;
г) буквы, входящие в название только двух нечетных дней недели.
Для вывода множеств использовать процедуру.
Решение задачи: «Вывести в алфавитном порядке буквы, входящие одновременно во все множества»
textual
Листинг программы
type mnz=set of char;
procedure init(s:string;var m:mnz);
var i:byte;
begin
m:=[];
for i:=1 to length(s)do
m:=m+[s[i]];
end;
procedure print(m:mnz;s:string);
var c:char;
begin
writeln(s);
for c:='а' to 'я' do
if c in m then write(c:2);
writeln;
end;
var d1,d3,d5,d7,m1,m2,m3,m4:mnz;
c:char;
k:byte;
begin
init('понедельник',d1);
init('среда',d3);
init('пятница',d5);
init('воскресение',d7);
print(d1,'Множество D1');
print(d3,'Множество D3');
print(d5,'Множество D5');
print(d7,'Множество D7');
m1:=d1*d3*d5*d7;
if m1=[] then writeln('Нет букв, входящих во все множества')
else print(m1,'Буквы, входящие во все множества');
m2:=d1*d5;
if m2=[] then writeln('Нет букв, входящих одновременно в ножества D1 и D5')
else print(m2,'Буквы, входящие одновременно в ножества D1 и D5');
m3:=d1+d3+d5+d7;
print(m3,'Буквы, входяшие хотя бы в одно множество');
m4:=[];
for c:='а' to 'я' do
begin
k:=0;
if (c in d1)or(c in d3)or(c in d5)or(c in d7) then inc(k);
if k=2 then m4:=m4+[c];
end;
if m4=[] then write('Нет букв, входящих ровно в 2 множества')
else print(m4,'Буквы, входящие в 2 множества');
end.
Объяснение кода листинга программы
- Объявление инициализации процедуры init, которая принимает строку
sи переменную множествоmтипа mnz. Инициализация переменнойiтипа byte. - В инициализации процедуры init очищается множество
m, а затем циклично добавляются все символы из строкиsв множествоm. - Объявление процедуры print, которая принимает переменную множество
mтипа mnz и строкуs. - В процедуре print выводится строка
s, затем в цикле от 'а' до 'я' проверяется, принадлежит ли символ множествуmи если да, то символ выводится. - Объявление переменных
d1, d3, d5, d7, m1, m2, m3, m4типа mnz, а также переменныхcтипа char иkтипа byte. - Инициализация множеств d1, d3, d5, d7 с помощью процедуры init для строк
понедельник,среда,пятница,воскресениесоответственно. - Вывод на печать множеств d1, d3, d5, d7 с помощью процедуры print.
- Создание множества m1, содержащего буквы, входящие во все множества d1, d3, d5, d7, путем пересечения этих множеств. Если m1 пусто, выводится сообщение
Нет букв, входящих во все множества, иначе выводятся буквы из m1. - Создание множества m2, содержащего буквы, входящие одновременно в множества d1 и d5, путем пересечения этих множеств. Если m2 пусто, выводится сообщение
Нет букв, входящих одновременно в множества D1 и D5, иначе выводятся буквы из m2. - Создание множества m3, содержащего буквы, входящие хотя бы в одно из множеств d1, d3, d5, d7, путем их объединения. Вывод букв из множества m3.
- Создание множества m4, содержащего буквы, входящие ровно в 2 множества d1, d3, d5, d7. Если m4 пусто, выводится сообщение
Нет букв, входящих ровно в 2 множества, иначе выводятся буквы из m4.