МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ

ЭЛЕКТРОНИКИ И МАТЕМАТИКИ

(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

«Программа движения лифтов в жилом доме»

Лабораторная работа.

Преподаватель:

Выполнили студенты

группы с-24:

?юпс.

г. Москва

2007 год.

Введение. 3

Алгоритмы программы, описание реализации программы. 3

Общий алгоритм программы. 4

Схема алгоритма. 4

Описание алгоритма. 4

Алгоритм, осуществляющий добавление этажей, в очередь нужному лифту. 5

Схема алгоритма. 5

Алгоритм функции добавления этажей. 6

Схема алгоритма. 6

Описание алгоритма. 6

Алгоритм функции движения лифтов. 7

Схема алгоритма. 7

Описание алгоритма. 7

Алгоритм функции удаления этажей. 8

Схема алгоритма. 8

Описание алгоритма. 8


Введение.

Целью работы являлось - написать программу, управляющую лифтами в жилом доме.

В ходе работы необходимо было разработать алгоритм, который позволял бы эффективно управлять двумя и более лифтами. Затем реализовать его на языке С++.

Алгоритмы программы, описание реализации программы.

Количество лифтов в доме указывается перед компиляцией программы, в директиве #define NLIFT.

Лифты едут «пошагово» - при каждом нажатии клавиши Enter, программа делает один «шаг».

Для удобства (а именно, добавление более одного этажа, за каждый «шаг»), в программе используется блоки case, где при нажатии клавиш 1-9, мы получаем номер этажа, на который должен приехать лифт. В следствии чего, получилось несколько ограниченным количество этажей в доме.

НЕ нашли? Не то? Что вы ищете?

Каждый лифт имеет свою базу данных (методы класса). Где отражаются следующие характеристики:

1  Этаж, на котором находиться лифт в данный момент опроса.

2  Сведения о движение лифта (вверх, вниз или покоиться (покоиться в случае пустой очереди)).

3  Очередь этажей – тот список этажей лифта, по которому он совершает свое движение. Он равен HFLOOR-1, где HFLOOR - количество этажей в доме (а именно – 9, из-за блоков case).

  Общий алгоритм программы.

Схема алгоритма

Описание алгоритма

Что бы выйти из программы, необходимо нажать ‘0’.

Далее, пользователь вводит необходимые этажи.

Для перехода на следующий «шаг», пользователь должен нажать Enter.

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

  Алгоритм, осуществляющий добавление этажей, в очередь нужному лифту.

Схема алгоритма

Описание алгоритма

В функцию поступает введенный этаж.

Проверка 1 проверяет, есть ли этот этаж в очередях этажей лифтов. Если есть, то заканчиваем функцию, если нет продолжаем.

Проверка 2 позволяет добавлять в очередь этажей, этажи по ходу движения лифта, на которых он сможет остановиться, не нарушая стороны движения. Если ее условия выполняются, вызываем функцию добавления этажей, после ее выполнения конец алгоритма. Если нет, продолжаем.

Проверка 3 позволяет добавлять этажи в очередь пустым лифтам, при этом делается поиск наиболее близкого к этажу пустого лифта. Если ее условия выполняются, вызываем функцию добавления этажей, после ее выполнения конец алгоритма. Если нет, продолжаем.

Вызываем функцию добавления этажей для первого лифта. Конец алгоритма.

  Алгоритм функции добавления этажей.

Схема алгоритма

Описание алгоритма

Функция добавления, получив этаж, ищет свободное место в очереди и добавляет туда его.

Если первый этаж из очереди равен нулю, то b = 0 (лифт покоиться).

Если первый этаж из очереди больше этажа, на котором находился лифт. Сортируем очередь, для движения лифта вверх.

Если первый этаж из очереди меньше этажа, на котором находиться лифт. Сортируем очередь, дли движения лифта вниз.

Конец функции добавления этажей.

  Алгоритм функции движения лифтов.

Схема алгоритма

Описание алгоритма

Функция движения, получает первый этаж из очереди этажей лифта, а так же его местоположение.

Если первый этаж из очереди больше этажа, на котором находился лифт. Лифт едет вверх, что показывается на экране

Если первый этаж из очереди меньше этажа, на котором находиться лифт. Лифт едет вниз, что так же показывается сообщением на экране.

После выполнения вышеописанного, запускается функция удаления этажа, завершение которой, завершает функцию движения.

  Алгоритм функции удаления этажей.

Схема алгоритма

Описание алгоритма

Функция удаления этажа, проверяет, если лифт приехал на этаж (первый этаж из очереди этажей, равен этажу, на котором находиться лифт), то выводиться соответствующее сообщение и запускается алгоритм, который удалит данный этаж из очереди.

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