Множества - Pascal (249126)
Формулировка задачи:
Прошу помощи
Написать программу, которая по заданным множествам А, В, С формирует множество, задаваемое формулой:
Элементы полученного множества вывести на экран. Множества А, В, С задавать перечислением элементов.
Решение задачи: «Множества»
textual
Листинг программы
type sob = set of byte; procedure read_set(s: string; var x: sob); var t: byte; begin x := []; writeln('Перечислите через пробел элементы множества ', s, ' и нажмите клавишу <Enter>:'); while not seekeoln do begin read(t); include(x, t) end; readln end; var a, b, c, d, e, f: sob; i: byte; begin writeln('Элементы множества - числа в диапазоне [0..255].'); read_set('A', a); read_set('B', b); read_set('C', c); d := a + b; //объединение множеств A и B e := a * c; //пересечение множеств A и C f := (d + e) - d * e; //симметрическая разность множеств D и E writeln('Результирующее множество:'); if f = [] then writeln('<Пустое множество>') else for i := 0 to 255 do if i in f then write(' ', i); readln end.
Объяснение кода листинга программы
- Объявление типа данных
sob
для представления множества байтов. - Определение процедуры
read_set
для чтения элементов множества из консоли. - Создание пустого множества
x
и вывод сообщения с просьбой ввести элементы множества. - Чтение элементов множества до нажатия клавиши Enter.
- Объединение множеств
a
иb
в новое множествоd
. - Пересечение множеств
a
иc
в новое множествоe
. - Вычисление симметрической разности множеств
d
иe
и сохранение результата вf
. - Вывод сообщения о результирующем множестве.
- Проверка, является ли результирующее множество пустым.
- Если результирующее множество пустое, выводится сообщение
<Пустое множество>
. - Иначе, для каждого числа от 0 до 255 проверяется, содержится ли оно в результирующем множестве.
- Если число содержится в множестве, оно выводится на экран с пробелом.
- Завершение работы программы.