Задача о коммивояжере
Страница 4
diag : boolean - доступность главной диагонали (False - ввод на главной диагонали запрещен).
Procedure Inp (x, y, l : byte ; gg : char ; var qq : char ; var a : real ; var s : string ; st_r : boolean; scroll : boolean ; attrib : byte);
Процедура ввода строки с внутренним скроллингом. Передаваемые параметры:
x, y : byte - координаты начала строки ввода.
l : byte - ширина строки ввода.
gg : char - последний введенный символ до начала редактирования.
var qq : char - последний введенный символ при редактировании.
var a : real - возвращаемое real-число.
var s : string - возвращаемая строка.
st_r : boolean - переключатель ввода real / string (True - ввод real-числа).
scroll : boolean - выключатель скроллинга внутри строки (True - скроллинг включен).
attrib : byte - текущие цветовые настройки.
Procedure M_Size (var qq : char);
Процедура изменения размера матрицы. Передаваемые параметры:
var qq : char - последний введенный символ при редактировании.
Procedure New_Task (var b : workmatr);
Процедура генерации новой задачи. Передаваемые параметры:
var b : workmatr - указатель на матрицу (описана глобальной переменной).
Procedure Matr_Rnd (var a : workmatr);
Процедура случайной генерации матрицы. Передаваемые параметры:
var a : workmatr - указатель на матрицу (описана глобальной переменной).
Procedure ShowSolve (Solve : vertex);
Процедура вывода последнего полученного решения. Передаваемые параметры:
Solve : vertex - запись, содержащая все параметры последнего решения.
Function ChooseFile (Title : string ; var qq : char) : string;
Функция ввода имени файла. Передаваемые параметры:
Title : string - заголовок окна.
var qq : char - последний введенный символ при редактировании.
ChooseFile : string - строка, содержащая имя файла.
Procedure FileOpen (var b : workmatr ; var NN : byte);
Процедура чтения с диска матрицы задачи. Передаваемые параметры:
var b : workmatr - указатель на матрицу (описана глобальной переменной).
var NN : byte - текущая размерность задачи (описана глобальной переменной).
Procedure FileSave (var b : workmatr ; var NN : byte);
Процедура записи на диск матрицы задачи. Передаваемые параметры:
var b : workmatr - указатель на матрицу (описана глобальной переменной).
var NN : byte - текущая размерность задачи (описана глобальной переменной).
Procedure InpWidht;
Процедура задания ширины строки ввода при редактировании начальной матрицы задачи.
Procedure InpSaver;
Процедура задания времени задержки срабатывания Screen saver-а.
Function ChooseVertex (var N : Point ; var Count : integer ; var Act : char) : Point;
Процедура выбора вершины для обработки при обучающем режиме решения. Передаваемые параметры:
var N : Point - указатель на начало списка вершин.
var Count : integer - общее количество конечных вершин.
var Act : char - код клавиши, определяющий действия, производимые над вершиной.
ChooseVertex : Point - указатель на вершину, над которой совершаются действия.
Модуль SERVICE.PAS
Function GetKey : char;
Функция, полностью эквивалентная функции Readkey (имеет некоторые отличия по обработке прерываний клавиатуры).
Procedure Knock;
Процедура, производящая щелчок.
Procedure Clock_on;
Процедура включения внутреннего таймера программы.
Procedure Clock_off;
Процедура выключения внутреннего таймера программы.
Procedure SaveIt;
Процедура сохранения текущих установок программы в файле shadow.dsk.
Procedure RestoreIt;
Процедура восстановления установок программы. При отсутствии файла shadow.dsk делает установки по умолчанию.
Function Stop : boolean;
Процедура обработки клавиши Escape в фоновом режиме.
Procedure GetDaTi (var Time : Stime);
Процедура взятия времени и даты во внутренний формат программы. Передаваемые параметры:
var Time : Stime - текущие время и дата во внутреннем формате.
Procedure TIME (var Time1, Time2 : Stime);
Процедура расчета времени работы алгоритма. Передаваемые параметры:
var Time1 : Stime - время начала работы алгоритма.
var Time2 : Stime - время работы алгоритма.
Function ProcExit : word;
Процедура подтверждения выхода из программы.
Модуль DESCRIPT.PAS
Переменные, управляющие работой интерфейса и настройкой решения.
M : Pmenu ; |
Указатель на основное меню программы |
Sel : Word ; |
Текущий выбранный пункт меню |
ch, sk, gg, qq : char ; |
Переменные для работы с клавиатурой |
MethodH, MethodV, Tip, Direc : word ; |
Переменные определяющие режим решения |
TimeSScr : Longint ; |
Время задержки срабатывания Screen Saver-а |
w : boolean ; |
Временная булевская переменная |
SScrAct, |
Активность Screen Saver-а |
ClockAct, |
Активность часов |
SoundAct, |
Активность звука |
SoluAct : boolean ; |
Активность решения |
TimeN, TimeE : Stime ; |
Время начала и завершения решения |
TempStr : string ; |
Временная string-переменная |
TempReal : real ; |
Временная real-переменная |
Len, |
Длина элемента матрицы |
Step : byte ; |
Интервал вывода элементов матрицы |
Типы, используемые при работе алгоритма решения.
WorkMatr = array [ 1 Nmax+1, 1 Nmax+1 ] of real ; |
Тип рабочей матрицы |
Solu = array [ 1 Nmax ] of byte ; |
Вектор решения |
Labels = record gor, ver : Solu ; end ; |
Запись, содержащая вектора фиксированных городов |
Lab = array [ 1 Nmax ] of boolean ; |
Массив меток |
Point = ^Vertex ; |
Указатель на вершину |
Vertex = record Hi, Lo : real ; Go : Solu ; Res : Solu ; Attr : Char ; Prev, Next : Point ; end ; |
Запись, содержащая все свойства единичной вершины |
Переменные, используемые при работе алгоритма решения.
b, c : workmatr ; |
Исходная матрица задачи и матрица, используемая алгоритмом венгерского метода |
x : Solu ; |
Вектор решения |
i, j, |
Индексные переменные |
NN : byte ; |
Текущая размерность задачи |
MaxR, MinR : real ; |
Переменные, определяющие диапазон генерации матрицы |
LastSolve : Vertex ; |
Запись, содержащая параметры последнего решения |