Написать программу для обработки множеств, которая позволяет ввести три множества символов a, b и c и вычислить множество, являющееся:
Класс | Имя | Смысл | Тип | Структура |
---|---|---|---|---|
Входные данные | a, b, c | Заданные множества | множество символов | составная переменная |
Выходные данные | r | Полученное множество | множество символов | составная переменная |
№ теста | Входные данные | Ожидаемые результаты | Смысл теста |
---|---|---|---|
1 |
a = ['a', 'b', 'c', 'd', 'e', 'f'] b = ['d', 'e', 'f', 'g', 'h', 'r'] c = ['a', 'f', 'm', 'n', 'o'] |
a ∪ b = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'r'] a ∩ b = ['d', 'e', 'f'] a \ b = ['a', 'b', 'c'] a ∩ b ∪ c = ['a', 'd', 'e', 'f', 'm', 'n', 'o'] |
Проверка корректности результата операций над множествами |
2 |
a = ['!', '$', '+', ':', '?'] b = ['1', '2', '5', '9'] c = [' ', '&', '*'] |
a ∪ b = ['!', '$', '+', '1', '2', '5', '9', ':', '?'] a ∩ b = [] a \ b = ['!', '?', ':', '$', '+'] a ∩ b ∪ c = [' ', '*', '&'] |
Из каждой строки файла вводим символы и добавляем их в множество. Выполняем необходимые операции. Для вывода результата проверяем какие символы входят в полученное множество (при использовании стандартной реализации можно использовать цикл for…in) и выводим их в файл.
program Sets;
uses UnitSetOnBooleanArray;
var
a, b, c, r: TCharSet;
f: TextFile;
ch: char;
begin
if ParamCount < 2 then
begin
writeln('Недостаточно параметров');
exit;
end;
try
AssignFile(f, ParamStr(1));
Reset(f);
except
writeln('Невозможно открыть файл ''', Paramstr(1), ''' для чтения');
exit;
end;
Init(a);
while not eoln(f) do
begin
read(f, ch);
Add(a, ch);
end;
readln(f);
Init(b);
while not eoln(f) do
begin
read(f, ch);
Add(b, ch);
end;
readln(f);
Init(c);
while not eoln(f) do
begin
read(f, ch);
Add(c, ch);
end;
CloseFile(f);
try
AssignFile(f, ParamStr(2));
Rewrite(f);
except
writeln('Невозможно открыть файл ''', Paramstr(2), ''' для записи');
exit;
end;
write(f, 'Объединение: [');
r := Union(a, b);
for ch := chr(0) to chr(255) do
if IsInSet(r, ch) then
write(f, ch);
writeln(f, ']');
write(f, 'Пересечение: [');
r := Intersection(a, b);
for ch := chr(0) to chr(255) do
if IsInSet(r, ch) then
write(f, ch);
writeln(f, ']');
write(f, 'Разность: [');
r := Difference(a, b);
for ch := chr(0) to chr(255) do
if IsInSet(r, ch) then
write(f, ch);
writeln(f, ']');
write(f, 'Выражение: [');
r := Union(Intersection(a, b), c);
for ch := chr(0) to chr(255) do
if IsInSet(r, ch) then
write(f, ch);
writeln(f, ']');
CloseFile(f);
end.