1). Задание Даны три множества Х1, Х2, Х3, содержащие целые числа из диапазона 1..100. Известно, что мощность каждого множества равна 10. Сформировать новое множество Y = (Х1 – Х2) * (Х2 + Х3). На экран вывести исходные множества, а также полученное множество. Значения элементов исходных множеств ввести с клавиатуры. Из множества Y выделить подмножество Y1, которое состоит из чисел, делящихся на 3 без остатка. Определить мощность множества Y1.
2). Программа на языке Pascal
Program Mnozhestva; {Х1, Х2, Х3 - множества целых чисел из диапазона 1..100 с мощностью 10; значения элементов исходных множеств вводятся с клавиатуры: из предопределенного файла Input. Программа формирует новое множество Y = (Х1-Х2)*(Х2+Х3), выделяет из множества Y подмножество Y1, состоящее из целых чисел, делящихся на 3 без остатка, определяет мощность множества Y1, выводит на экран исходные множества Х1, Х2, Х3, полученные множества Y и Y1, а также мощность множества Y1} Uses Crt; {Подключение модуля Crt} Var X1, X2, X3, Y, Y1, Diap: Set of 1..100; {исходные и искомые множества различных символов} Simb: Integer; {элементы множества} Mos: byte; {можность множества Y1} i: byte; {вспомогательная переменная} BEGIN ClrScr; {очистка текущего окна на экране} Diap := [1..100]; {диапазон возможных значений элементов множеств} {ввод множеств Х1, Х2, Х3} X1 := []; {определение начального значения множества Х1 - пустое множество} Writeln ('Введите 10 элементов множества X1 (числа от 1 до 100)'); i := 0; Repeat {итерационный цикл для 10 элементов} Read (Simb); {ввод элементов} If Simb in X1 then {проверка повторно введенных элементов мно-жества} Continue else {переход к концу тела цикла} If Simb in Diap then {проверка правильности введенного элемента} inc (i) else {подсчет правильно введенных элемента} Writeln (Simb, ' - недопустимое значение'); X1 := X1 + [Simb]; {формирование множества Х1} Until i = 10; {выход из цикла, когда правильно введены все 10 элементов} Readln; {переход на новую строку} X2 := []; {определение начального значения множества Х2 - пустое множество} Writeln ('Введите 10 элементов множества X2 (числа от 1 до 100)'); i := 0; Repeat {итерационный цикл для 10 элементов} Read (Simb); {ввод элементов} If Simb in X2 then {проверка повторно введенных элементов мно-жества} Continue else {переход к концу тела цикла} If Simb in Diap then {проверка правильности введенного элемента} inc (i) else {подсчет правильно введенных элемента} Writeln (Simb, ' - недопустимое значение'); X2 := X2 + [Simb]; {формирование множества Х2} Until i = 10; {выход из цикла, когда правильно введены все 10 элементов} Readln; {переход на новую строку} X3 := []; {определение начального значения множества Х3 - пустое множество} Writeln ('Введите 10 элементов множества X3 (числа от 1 до 100)'); i := 0; Repeat {итерационный цикл для 10 элементов} Read (Simb); {ввод элементов} If Simb in X3 then {проверка повторно введенных элементов мно-жества} Continue else {переход к концу тела цикла} If Simb in Diap then {проверка правильности введенного элемента} inc (i) else {подсчет правильно введенных элемента} Writeln (Simb, ' - недопустимое значение'); X3 := X3 + [Simb]; {формирование множества Х3} Until i = 10; {выход из цикла, когда правильно введены все 10 элементов} {вывод на экран множеств Х1, Х2, Х3} Writeln ('Элементы множества X1 ', X1); Writeln ('Элементы множества X2 ', X2); Writeln ('Элементы множества X3 ', X3); {формирование множества Y} Y := []; {определение начального значения множества Y - пустое множество} Y := Y + (X1-X2)*(X2+X3); {формирование множества Y: первыми вы-полняются операции в скобках, затем операция пересечения (*) множеств, последняя операция - объединение пустого и определенного множеств} Writeln ('Элементы множества Y ', Y); {вывод на экран множества Y} {формирование множества Y1} Y1 := []; {определение начального значения множества Y1 - пустое множество} For S := 1 to 100 do {перебор всех чисел от 1 до 100} if S in Y then {проверка вхождения очередного числа в множество Y} if S mod 3 = 0 then {проверка элемента множеста Y на кратность трем} Y1 := Y1 + [S]; {добавление элемента в множество Y1 при соблюдении предыдущих условий} Writeln ('Элементы множества Y1 ', Y1); {вывод на экран множества Y1} {определение мощности множества Y1} Mos := 0; {определение начального значения мощности множества Y1 - пустое множество} For i:= 1 to 100 do {перебор всех чисел от 1 до 100} if i in Y1 then {проверка вхождения очередного числа в мно-жество Y1} inc (Mos); {увеличение значения мощности при } Writeln ('Мощность множества Mos = ', Mos); {вывод на экран мощно-сти множества Y1} ReadKey END.
3) Тестовый набор данных (входные данные и результаты работы программы, полученные при этих данных) Программа корректно работает при введении чисел от -32768 до 32767 (тип Integer), при этом во множества записываются только числа от 1 до 100, при введении числа не из этого диапазона программа выдает сообщение о недопустимости такого элемента, а само число - игнорирует. При записи элементов множества в одну строку, разделенных одним или несколькими пробелами, может возникнуть такая ситуация, что в строке записано больше десяти «подходящих» элементов множества. В таком случае во множество войдут первые десять «подходящих» чисел из строки, оставшиеся числа - игнорируются.