Курсоваяработ а «Раскрашивание карты» по дисциплине «Структуры данных»


Определение в какой цвет, какую область нужно раскрасить



бет3/10
Дата23.09.2024
өлшемі1,28 Mb.
#145232
түріКурсовая
1   2   3   4   5   6   7   8   9   10
Байланысты:
Отчет Курсовая

Определение в какой цвет, какую область нужно раскрасить


Для данного определения была получена матрица. В этой матрице номер строки и номер столбца отвечает за каждую область. Если области смежные, то при пересечении столбца и строки с номерами этих областей стоит 1, иначе 0.
Для начала нужно отсортировать области по убывания количества соседей.

  1. В матрице рассматривается область с наибольшим количеством соседей, которую еще не рассматривали.

  2. Данная область окрашивается в цвет

  3. Ищется область, которая не является смежной, то есть в строке с номером данной области ищется 0. Если такой области нет, то выполняется пункт 1)

  4. Несмежная область окрашивается в цвет

  5. Строки с номерами данной и несмежной области складываются с помощью битовой операции ИЛИ.

  6. Полученная строка записывается в строку с номером данной области, а строка с номером несмежной области заполняется «1».

  7. Выполняется пункт 3)

  1. Практическая часть

    1. Справка


Данная программа начинает выполняться в функции main. Для начала проверяется количество аргументов командной строки. Если их меньше 5 или они введены некорректно, то выводится справка.

Рисунок 2 – Справка, которая выводится в случае неправильных аргументов командной строки
Если все введено корректно, то ключи обрабатываются, а далее вызывается процедура Action(). Эта процедура является основной и выполняет весь алгоритм.
    1. Основные файлы и переменные


Подготовкой к реализации алгоритма является создание переменных, которые используются на протяжении всего алгоритма.
Сначала создается дополнительный файл Table, который используется для реализации матрицы. Файл Log является глобальной переменной. Переменные TimeOnColoring и TotalTime отвечают за время алгоритма раскраски и всего времени реализации алгоритма.
Переменная Areas отвечает за количество областей, переменная NumberOfColors отвечает за количество используемого цвета, FlagWidth отвечает за количество дополнительных байт в конце строки.


    1. Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет