Э.Н. Самохвалов, Ю.Е. Гапанюк
8
Блок 8. Выполнение объединения для всех параметров «ссылоч-
ного» типа, вложенных в элемент. Это необходимо, потому что
элемент (соответствующий вложенному параметру) из второго
пособия может быть не включен в результат, поскольку он объединен
с элементом из первого пособия и возникнет «сломанная» ссылка.
Блок 9. Так как элемент и «элемент1» неэквивалентны, текущий
элемент из второго пособия добавляется в результирующее
множество.
Блоки 10–12. В цикле осуществляется перебор всех параметров,
вложенных в текущий элемент. Для каждого параметра вызывается
соответствующий алгоритм объединения.
Блок 13. В этом блоке проводится замена элемента из первого
множества обновленным элементом.
Информация о замене «элемент1» на «элемент» сохраняется в
множестве EQG, что дальше используется при замене элементов
ссылочного типа.
Блок 14. Текущему элементу присваивается id элемента из
первого множества и создается новое значение идентификатора eid.
Из результирующего множества удаляется «элемент1» и добавляется
обновленный элемент.
Блок 15. Выходными параметрами алгоритма являются результи-
рующее множество «Результат» и обновленное множество EQG, со-
держащее информацию о замене элементов 3. Алгоритм объединения
элементов без частичной эквивалентности
Описание алгоритма
(Рис. 2).
Блок 1. Входными параметрами алгоритма являются: множества
элементов для объединения из первого и второго пособия, логическая
переменная флаг_назв (определяет, нужно ли считать эквивалентны-
ми элементы с одинаковыми названиями), множества эквивалентных
элементов EQ и EQG.
Блок 2. По умолчанию в результат включаются элементы из пер-
вого пособия.
Блок 3. В цикле осуществляется перебор всех элементов, принад-
лежащих множеству «Пособие2.Множество». Цикл завершается в
блоке 10.
Блок 4. Поиск элемента «элемент1» в первом пособии, для кото-
рого
элемент.id = элемент1.id
и
элемент.eid = эле-
мент1.eid
, т. е. «элемент1» полностью эквивалентен текущему эле-
менту.
Если такой элемент найден, текущий элемент не нужно включать
в результирующее пособие, так как туда уже включен полностью эк-
вивалентный «элемент1». Переход к следующей итерации цикла: к
блоку 10.