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


Работа с таблицей, содержащая информацию о смежности областей



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

Работа с таблицей, содержащая информацию о смежности областей


Для начала таблица делается симметричной. Для этого с помощью побитовой операции ИЛИ двух областей определяется число, которое записывается для каждой исходной области. То есть при определении смежности вышло так, что область 1 и область 2 являются смежными, но в таблицу записалось число «1» (то есть области смежные) в ячейку со строкой 1 и столбцом 2, но не со строкой 2 и столбцом 1. Тогда определяется их побитовое ИЛИ (в данном случае 1) и записывается в эти две ячейки.
Далее в функции Define с помощью массива AreaColor определяется количество соседей для каждой области. То есть подсчитывается количество 1 в каждой строке и число записывается в ячейку AreaColor с номером данной строки.
На основе этого ищется самое большое количество соседей, для данной области создается структура Queue и туда записывается номер области. Таким образом получаем очередь областей по убыванию количества соседей.
Реализуется цикл, в котором осуществляется проход по каждой области. Данный алгоритм описан в теоретических исследованиях (Определение в какой цвет, какую область нужно раскрасить). Область достается из очереди и рассматриваются ее несмежные области. В массив AreaColor, который был обнулен, записывается число, которое отвечает за цвет области, в ячейку с номером соответствующей области. Таким образом на выходе получается массив, в котором хранятся номера цветов, в которые требуется окрасить соответствующие области.
    1. Окрашивание


Данный алгоритм описан в пункте 4.6 Определение количества областей, только теперь область окрашена не в белый цвет, а в цвет, соответствующий ее номеру. И окрасить нужно ее в цвет, который получен с помощью массива AreaColor.
    1. Файл log.log


Для записи данного файла реализованы некоторые функции. Запись в лог-файле выглядит так: сначала идет запись даты в формате месяц/число/год, потом время исполнения, флаг (INFO – информация или ERROR – ошибка) и после информация.
При старте программы исполняется функция PrintStart(), в которой записывается начало программы. Данная запись представлена на Рисунок 4 – Отображение информации в файле log.log
При успешном открытии входного и выходного файла записывается об этом, а также записывается количество пикселей в ширине, высоте изображения и количество дополнительных байт в конце строки. Это осуществляется в функции PrintOpenFiles().
При завершении программы записывается время выполнения всего алгоритма и количество используемых цветов, функция PrintResult().
Если при работе возникает какая-то ошибка, то с помощью функции PrintError() осуществляется запись об ошибке. Пример с записью ошибки представлен на Рисунок 5 – Запись об ошибке в лог-файле ниже.

Рисунок 4 – Отображение информации в файле log.log

Рисунок 5 – Запись об ошибке в лог-файле


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




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

    Басты бет