Реферат: Решение задачи о кратчайшем маршруте - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Решение задачи о кратчайшем маршруте

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Архив Zip, 49 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

Решение задачи о кратчайшем маршруте методом Форда 1. Постановка с етевой транспортной за дачи. На практике часто встречается задача определения кратчайшего маршрута по заданной сети из начального пункта до конечного пункта маршрута . Транспортная сеть может быть представлена в виде графа (рис .1), дуги которого - транспортные магистрали , а узлы - пункты отправления и назначения . Графически транспортная сеть изображается в виде со вокупности n пунктов P 1 , P 2 ,..., P n , причем некоторые упорядоченные пары ( P i , P j ) пунктов назначения соединены дугами заданной длинны ( P i , P j )= l ij . Некоторые или все д уги могут быть ориентированы , т.е . по ним возможно движение только в одном направлен ии , указанном стрел ками . На рис .1 построена ориентированная транспо ртная сеть , содержащая шесть пунктов P 1 , P 2 ,..., P 6 , которые связаны между собой восьмью транспортными путями. Необходимо определить кратчайший маршрут из пункта P 1 в P 6 . Определение кратчайшего маршрута состо ит в указании последоват ельности прохождения маршрута через промежуточны е пункты и суммарной длинны маршрута . Например маршрут из пункта P 1 в пункт P 6 : P 1 P 2 P 4 P 6 ; L = l 12 + l 24 + l 46 =10 . Постановка задачи приобретает смысл в том случае , если имеется несколько в ариантов маршрута из начального пункта в конечный . В этом случае физический см ысл функции цели задачи состоит в минимиз ации общей длинны маршрута , т.е . в определе нии кратчайшего пути из P 1 в P n . 2 . Описание метода и а лгоритма решения. Метод Форда бал раз работан специа льно для решения сетевых транспортных задач и основан , по существу , на принципе оп тимальности. Алгоритм метода Форда содержит четыре этапа (схема 1). На первом этапе производится заполнение исходной таблицы расстояний от любого i - го пункта в любой другой j -й пу нкт назначения . На втором этапе определяются для каждого пункта некоторые параметры i и j по соответствующим формулам . Далее на третьем этапе определяются кратчайшие расстоян и я . Наконец , на четвертом этапе опреде ляются кратчайшие маршруты из пункта отправле ния Р 1 в л юбой другой пункт назначения Р j , j =1,2,..., n . Рассмотрим подробнее каждый из этих ч етырех этапов. 2.1 Первый эта п : Составление исходной таблицы расстояний. Данна я таблица содержит n +1 строк и такое же количество столбцов ; P i - пункты отправления ; P j - пункты назначения . Во второй строке и вто ром столбце проставляется значения параметров i и j , определени е значений которых произ водятся на втором этапе решения задачи . В остальных клетках таблицы проставляются знач ения расстояний l ij из i - го пункта в j - й пункт . Причем заполняем клетки таблицы , л ежащие выше главной диагонали . Если пункт P i не соединен отрезко м пути с пунктом P j , то соответ ствующая клетка таблицы не заполняется. 2.2 Второй эта п : Определение i и j . Определяется значение параметров в соот ветствии с формулой : j =min( i +l ij ); i=1,2,...,n; j=1,2,...,n, (1) где 1 =0. Эти значения заполняются во второй ст роке и во втором столбце. 2.3 Третий этап : Определение длинны кратча йших путей. Возможны два случая определения дл инны кратчайших путей из пунктов Pi в пункты P j , i =1,2,..., n ; j =1,2,..., n . В первом случае , если выпо лняются неравенство : j - i l ij ; l ij 0; j=1,2,...,n; j=1,2,...,n, (2) то значения параметров 1 ,..., n удовлетворяют условиям оптимальности . Каждое значение j есть не что ино е , как кратчайшее расстояние от пункта P i до пункта P j , j =2,3,..., n . Во втором случае , если для некоторых клеток ( i , j ) таблицы имеет место неравенство : j - i > l ij ; i =1,..., n ; j =1,..., n , (3) т о значения j и i могут быть уменьшены. Если справедливо (3), тогда исправим значени е j 0 , пересчитав его по формуле : j 0 = i 0 + l i 0 j 0 . (4) 2.4 Четвертый этап : Нахождение кратчайшего пути . Определения последовательности пунктов крат чайшего маршрута . С этой целью для каждого столбца определяют величину : l r 1, j = j - r 1 , (5) где l r 1, j берется из таблицы , причем r 1 выбирается так , чтобы выполнилось равенство (5). Таким образом определим r 1. Далее продолжим ту же операцию , но будем считать , п оследн ей не P n , а P r 1 . Будем продолжать до тех пор , пока r n =1. Таким образом кратчайший маршрут проход ит через P r 1 , P r 2 ,..., P rn , а длинна маршрута Lmin = l r 2, r 1 + l r 3, r 2 +...+ l rn -1, rn . 3. Описание программы. Программа “ FORD ” написана на языке высокого уровня - Pascal , в интегрированной среде разработки “ Turbo Pascal 7.0 ” фирмы Borland Inc . Программа предназначена для нахожден ия кратчайшего пути в сетевом графе по методу Форда . Программа легка в испо льзовании , что достигается за счет использова ния дружественного интерфейса и иерархического меню . Вначале программы производится ввод д анных , затем нахождение кратчайшего маршрута и вычисление его длинны , далее в ыводится результат . Вывод результатов возможен как в файл , так и на экран. В программе предусмотрена возможность п овторного решения задачи с другими исходными данными. 4. Описание подпрограмм и процедур. Подпрограммы и фун кции. ТИП НАЗВАНИЕ НАЗНАЧЕНИЕ Function type : real min; Вычисляет минимальное значение вект ора k [ i ]; Procedure set_graph_mode; Устанавливает графический режим ; Procedure install_firewall; Инициализирует огонь ; Procedure fire; Процедура рисования ог ня ; Procedure ok; Вы водит сообщение о корректности операции ; Procedure notok; Выводит сообщение о некорректности операции ; Procedure check_input_data; Проверяет корректность ввода данных ; Procedure keybord_input; Ввод исходных данных с клави атуры ; Procedure ramka; В ыводит рамку по краям экрана ; Procedure save; Сохранение результатов в файл ; Procedure about_program; Выводит информацию о программе ; Procedure about_method; Выводит информацию о методе Форда ; Procedure output_graph; Рисует вершины гр афа ; Procedure draw_ways; Рисует дуги графа ; Procedure draw_short_way; Рисует кратчайший маршрут ; Procedure count_point_coord; Вычисляет экранные координаты вершин графа ; Procedure set_font; И нициализирует шрифт пользователя ; Procedure calculate; Осно вное математическое ядро программы ; Procedure draw_menu; Открытие меню ; Procedure redraw_menu; Закрытие меню ; Procedure main_menu; Основной механизм меню ; Procedure pixel; Ставит точку ; Procedure stars; И нициализирует массив со звездами ; Procedure welcomescreen; Заставка ; 4.2 Таблица идентификаторов. ИМЯ тИП НАЗНАЧЕНИЕ Конста нты menu array of string Описывает меню программы menuof array of byte Описывает меню программы menugo array of byte Описывает меню программы name1 string Имя файла входных данных name2 string Имя файла выходных данных xxx word Размер огня по х yyy word Размер огня по у xx1 word Координата х огня yy1 word Координата у огня messize byte Размер заглавия title array of string Заглавие Переме нные mas array of real Основная матрица вычислений coord_point array of real Координаты вершин графа i integer Переменная для организации цикла j integer Переменн ая для организации цикла t integer Используется при расчете пути m integer Счетчик кол-ва вершин в кр ат . Пути n integer Кол-во вершин в графе z integer Код ошибки x1 integer Исп . в процедуре вывода на экран y1 integer Исп . в процедуре вывода на э кран x2 integer Исп . в процедуре вывода на экран y2 integer Исп . в процедуре вывода на э кран kk integer Промежут очное значение iii integer Промеж уточное значение x integer Координа та х конца отрезка y integer К оордината у конца отрезка lenth integer Кол-во вершин в кратчайшем маршр уте chrus integer Номер шрифта пользователя z1 integer Н омер гра фического драйверв z2 integer Номер графического режима k array of real Используется для нахождения минимум а result array of integer Номе ра вершин , которые входят в кратчайший мар шрут error_code array of byte Коды ошибок при вводе данных fire1 array of byte Хранит цвета огня fire2 array of byte Матрица промежуточных данных aa real Используется при вычислении координ ат вершин графа pi1 real Использ уется при вычислении координат вершин графа s real Хранит промежуточное значение l boolean И сп . при определении кратчайшего маршрута inputdata boolean TRUE , если данные вводились calculatedata boolean TRUE , если данные били обработаны mov boolean Исполь зуется в процедуре меню o string Используется при вводе с клавиа туры temp byte Хранит времен ное значение cursor byte Координаты курсора меню lastcursor byte Последние координаты курсора меню menulevel byte Ур овень меню nline byte Кол-во строк в текушем уровне меню pressed char Используется при вводе с клавиа туры f1 text Файловая переменная f2 text Фа йловая переменная 5. Примеры решения контрольных задач. Исходная таблица расстояний дл я одного из вариантов ранжированного графа : P i /P j 1 2 3 4 5 6 1 X 5 3 2 X 2 5 3 X 7 7 4 X 3 5 X 2 6 X После обработки таблицы с заданными исходными данными , программа выдает следующи е результаты : - кратчайший маршрут : 1-2-4-6 - длинна кратчайшего маршрута : 10 Исходная таблица расстояний для одного из вариантов не ранжированного графа : P i /P j 1 2 3 4 5 6 1 X 1 6 2 2 X 1 3 8 X 4 2 X 5 5 1 3 X 9 6 X После обработки таблицы с заданными и сходными данными , программа выдает следующие результаты : - кратчайший маршрут : 1-5-4-2-6 - длинна кратчайшего маршрута : 8 Программа работоспособна при любых других вари антах исходных данных. 6. Выводы. Анализ алгоритма операций , необходимых пр и решении сетевой транспортной задачи методом Форда в заданной постановке подтверждает : Достижение конечного результата производится в четыре этапа. Каждый этап описывается прост ыми математическими операциями и может быть запис ан на одном из языков программирования. Составлена программа на алгоритмическом я зыке высокого уровня “ Pascal ” , позволяющая решать задачу в диало говом режиме , удобном для пользователя не программиста. Алгори тм решения транспортной задачи методом Форда является универсальным , что позволяет производить расчёты как с ранжир ованными , так и с не ранжированными графам и (примеры решения задачи приведены на стр анице 11). Возможность реализаций для удобства работ ы пол ьзователя в программе сервисной части. Возможность неоднократного решения задачи методом Форда при различных исходных данны х. PROGRAM ford ; uses crt,graph; const menu:array[0..4,1..6] of string = (('Ввод данных ','Решение задачи ','Вывод результата ', 'О м етоде ','О программе ','Выход '), ('Ввод данных ','Просмотр данных ','Назад ','','',''), ('Экран ','Файл ','Назад ','','',''), ('Клавиатура ','Файл ','Назад ','','',''), ('Да ','Нет ','','','','')); menuof:array[0..4] of byte =(6,3,3,3,2); menugo:array[0..4,1..6] of byte = ((1,0,2,0,0,4), (3,0,0,0,0,0), (0,0,0,0,0,0), ( 0,0,1,0,0,0), (0,0,0,0,0,0)); name1='input.dat'; name2='output.dat'; xxx=140; yyy=20; xx1=10; yy1=140; messize=3; col:array[16..31] of byte=(0,186,113,4,40,41,41,42,42,43,44,69,15,15,15,15); title:array[0..messize] of string = (' АЛГОРИТМИЧЕСКИЕ МЕТОДЫ ', ' ИССЛЕДОВАНИЯ ОПЕРАЦИЙ ', ' ', ' Метод Форда '); type matr = array[0..20,0..20] of real; coord = array [1..20,1..2] of real; var mas:matr; coord_point:coord; i,j,t,m,n,z,x1,y1,x2,kk,iii,y2,x,y,lenth,chrus,z1,z2:integer; k:array[1..20] of real; result:array[1..20] of integer; error_code:array[1..5] of byte; fire1:array[1..yyy,1..xxx] of byte; fire2:array[1..yyy,1..xxx] of byte; mask:array[1..6] of byte; starx:array[1..500] of word; stary:array[1..500] of word; starc:array[1..500] of byte; aa,cc,pi1,s:real; l,inputdata,calculatedata,move:boolean; o:string; temp,cursor,lastcursor,menulevel,nline,step:byte; pressed:char; f1,f2:text; FUNCTION min:rea l; begin s:=0; for i:=1 to n do if (s=0) and (k[i]<>-1) then s:=k[i] else if(k[i]-1) then s:=k[i]; min:=s; end ; PROCEDURE set_graph_mode; begin z1:=installuserdriver('svga256',nil); initgraph(z1,z2,''); cleardevice; end ; PROCEDURE pixel(x:word;y,col:byte); begin asm mov bx,x mov cl,y mov dl,col mov ax,0a000h mov es,ax mov al,0a0h mul cl add ax,ax add bx,ax mov [es:bx],dl end ; end ; PROCEDURE install_firewall; begin for i:=1 to yyy do for j:=1 to xxx do begin fire1[i,j]:=0; fire2[i,j]:=0; end ; end ; PROCEDURE fire; begin for i:=1 to yyy-1 do for j:=1 to xxx do begin pixel(j*2+xx1,i*3+yy1,col[fire1[i,j]]); pixel(j*2+xx1,i*3+yy1-1,col[fire1[i,j]]); pixel(j*2+xx1,i*3+yy1-2,col[fire1[i,j]]); end ; for j:=1 to xxx do begin kk:=random(8); if kk<3 then fire1[yyy,j]:=16 else fire1[yyy,j]:=round(31-kk); end ; for i:=yyy-1 downto 1 do for j:=2 to xxx-1 do begin fire2[i,j]:=round((fire1[i+1,j]+fire1[i+1,j-1]+fire1[i+1,j+1]-random(4))/3); if (fire2[i,j]<16) or (fire2[i,j]>31) then fire2[i,j]:=16; end ; for i:=1 to yyy do for j:=1 to xxx do fire1[i,j]:=fire2[i,j]; end ; PROCEDURE ok; begin cleardevice; setcolor(1); rectangle(120,100,520,220); rectangle(100,120,540,200); setcolor(14); outtextxy(180,130,' Оп e ра ция произведена '); outtextxy(250,160,' корректно .'); repeat until keypressed; end ; PROCEDURE notok; begin cleardevice; setcolor(4); rectangle(120,100,520,220); rectangle(100,120,540,200); setcolor(14); outtextxy(180,130,' Оп e рация произведена '); outtextxy(2 30,160,' не корректно .'); repeat until keypressed; end ; PROCEDURE check_input_data; begin inputdata:=true; for i:=1 to 5 do error_code[i]:=0; for i:=0 to n do begin if mas[i,1]<>-1 then error_code[1]:=1; if mas[n,i]<>-1 then error_code[2]:=1; if mas[i,i]<>-1 then error_code[3]:=1; end ; for i:=1 to n do for j:=1 to n do begin if (mas[i,j]<>-1) and (mas[j,i]<>-1) then error_code[4]:=1; if (mas[i,j]<0) and (mas[i,j]<>-1) then error_code[5]:=1; end ; clrscr; if error_code[1]<>0 then writeln( 'Ошибка : Не существует истока .'); if error_code[2]<>0 then writeln('Ошибка : Не существует стока .'); if error_code[3]<>0 then writeln('Ошибка : Существует дуга из одной вершины в ту же вершину .'); if error_code[4]<>0 then writeln('Ошибка : Существует две д уги и з одной вершины в другую .'); if error_code[5]<>0 then writeln('Ошибка : Существует дуга с отрицительн ой нагрузкой .'); for i:=1 to 5 do if error_code[i]<>0 then inputdata:=false; if (z<>0) or (round(n)<>n) or (n<2) or (n>20) then inputdata:=false; calculatedata:=false; end ; PROCEDURE keyboard_input; begin z:=0; closegraph; clrscr; write('Введите колличество пунктов (2-20): '); readln(o); val(o,n,z); if (z<>0) or (round(n)<>n) or (n<2) or (n>20) then check_input_data; writeln(' Введите нагрузку . Если дуга не существует , то нажмите Enter.'); writeln; for i:=1 to n-1 do for j:=i to n do if i<>j then begin write(' Введите нагрузку от ',i,'-й вершины д о ',j,'-й вершины :'); readln(o); if o<>'' then val(o,mas[i,j],z) else mas[i,j]:=-1; if z<>0 then exit; end ; check_input_data; set_graph_mode; settextstyle(chrus,0,2); if inputdata=true then ok else notok; end ; PROCEDURE ramka; begin cleardevice; setcolor(1); rectangle(30,10,610,470); rectangle(10,30,630,450); end ; PROCEDURE save; begin assign(f2,name2); rewrite(f2); write(f2,'Кратчайший маршрут : '); for i:=1 to lenth do write(f2,result[lenth-i+1]); writeln(f2,''); write(f2,'Длинна кратчайшего маршрута : '); write(f2,round(mas[0,n])); close(f2); ok; end ; PROCEDURE about_program; begin ramka; settextstyle(chrus,0,5); setcolor(14); outtextxy(160,30,'О программе '); settextstyle(chrus,0,1); setcolor(12); outtextxy(40,100,'Программа : '); outtextxy(40,150,'Версия : '); outtextxy(40,175,'Назначение : '); outtextxy(40,240,'Автор : '); outtextxy(40 ,265,'Дата : '); setcolor(8); outtextxy(200,100,'Решение задачи о кратчайшем '); outtextxy(200,120,'маршруте методом Форда .'); outtextxy(200,150,'v1.0'); outtextxy(200,175,'Курсовой проект по дисциплине '); outtextxy(200,195,'"Алгоритмические методы иссле -'); outtextxy(200,215,'дования опираций "'); outtextxy(200,240, ’ ’ ); outtextxy(200,265,'декабрь 1998 года '); setcolor(11); outtextxy(50,395,'для большей информации смотрите README.TXT'); repeat until keypressed; end ; PROCEDURE about_metod; begin ramka; settextstyle(chrus,0,5); setcolor(14); outtextxy(130,30,'О методе Форда '); settextstyle(chrus,0,1); setcolor(8); outtextxy(40,90,'Метод Форда был разработан специал ьно для '); outtextxy(50,110,'решения сетевых транспортных задач и осно -'); outtextxy(50,130, 'ван , по существу на принцип е оптимальности .'); outtextxy(40,150,'Алгоритм метода Форда содержит чет ыре этапа .'); outtextxy(50,170,'На первом этапе производится запол нение ис -'); outtextxy(50,190,'ходной таблицы расстояний от любог о i-го '); outtextxy(50,21 0,'пункта в любой другой j-й пункт назначения '); outtextxy(50,230,'На втором этапе определяются для каждого '); outtextxy(50,250,'пункта некоторые параметры Ai и Aj по соот -'); outtextxy(50,270,'ветствующим формулам и правилам . Да лее на '); outtextxy(50,290, 'третьем этапе определяется кра тчайшее рас -'); outtextxy(50,310,'стояние . Наконец , на четвертом этап е опре -'); outtextxy(50,330,'деляются кратчайшие маршруты из пу нкта '); outtextxy(50,350,'отправления Р 1 в любой пункт на значения Р j,'); outtextxy(50,370,'j= 2,3,...,n.'); repeat until keypressed; end ; PROCEDURE output_graph; begin settextstyle(chrus,0,1); for i:=1 to n do begin setcolor(10); fillellipse(round(coord_point[i,1]),round(coord_point[i,2]),15,15); setcolor(15); str(i,o); if i>9 then outtextxy(round(coord_point[i,1]-12), round(coord_point[i,2]-12),o) else outtextxy(round(coord_point[i,1]-7), round(coord_point[i,2]-12),o); end ; repeat until keypressed; end ; PROCEDURE draw_ways; begin settextstyle(chrus,0,2); for i:=1 to n do for j:=1 to n do if mas[i,j]<>-1 then begin x1:=round(coord_point[i,1]); y1:=round(coord_point[i,2]); x2:=round(coord_point[j,1]); y2:=round(coord_point[j,2]); setcolor(15); line(x1,y1,x2,y2); temp:=round(mas[i,j]); str(temp,o); setcolor(2); outt extxy(round((x1+x2)/2+5),round((y1+y2)/2+5),o); end ; end ; PROCEDURE draw_short_way; begin for i:=1 to lenth-1 do begin setlinestyle(0,0,3); setcolor(red); x:=result[i]; y:=result[i+1]; x1:=round(coord_point[x,1]); y1:=round(coord _point[x,2]); x2:=round(coord_point[y,1]); y2:=round(coord_point[y,2]); line(x1,y1,x2,y2); end ; settextstyle(chrus,0,1); setcolor(14); outtextxy(50,370,'Кратчайший маршрут : '); for i:=1 to lenth do begin str(result[lenth-i+1],o); outtextxy(300+i*15, 370,o); end ; outtextxy(50,400,'Длинна кратчайшего маршрута : '); str(round(mas[0,n]),o); outtextxy(420,400,o); end ; PROCEDURE count_point_coord; begin pi1:=(2*pi)/n; m:=0; aa:=3*pi/2; for i:=1 to n do begin coord_point[i,1]:=(cos(aa)*150)+300; coord_point[i,2]:=(sin(aa)*150)+200; aa:=aa+pi1; end ; end ; PROCEDURE set_font; begin chrus:=installuserfont('fn03'); settextstyle(chrus,0,2); end ; PROCEDURE calculate; begin for i:=1 to n do k[i]:=0; clrscr; mas[0,1]:=0; mas[1,0]:=0; 3 for j:=2 to n do begin for i:=1 to n do if (mas[0,i]<>-1) and (mas[i,j]<>-1) then k[i]:=mas[0,i]+mas[i,j] else k[i]:=-1; mas[0,j]:=min; mas[j,0]:=mas[0,j]; end ; 4 repeat l:=true; for i:=1 to n do for j:=1 to n do if (mas[0,j]-mas[0,i]>mas[i, j]) and (mas[i,j]<>-1) then begin l:=false; mas[0,j]:=mas[0,i]+mas[i,j]; end ; until l; 5 j:=n; m:=1; t:=0; for i:=1 to n do result[i]:=-1; result[1]:=n; repeat inc(m); for i:=1 to j do begin if (mas[i,j]<>-1) and (i<>j) and (mas[i,j]=mas[0,j]-mas[0,i]) then begin t:=i; break; end ; end ; result[m]:=t; j:=t; lenth:=m; until j=1; calculatedata:=true; ok; end ; PROCEDURE stars; begin for i:=1 to 500 do begin starx[i]:=round(random(640)); stary[i]:=round(random(480)); starc[i]:=round(31-random(16)); end ; end ; PROCEDURE draw_menu; begin cleardevice; for i:=1 to 500 do putpixel(starx[i],stary[i],starc[i]); cursor:=1; lastcursor:=cursor; for i:=1 to 260 do begin setcolor(8); line(210+i,110,210+i,110); setcolor(4); line(200+i,100,200+i,100); end ; for j:=1 to nline*30+10 do begin setcolor(8); line(210,110+j,470,110+j); setcolor(4); line(200,100+j,460,100+j); end ; setcolor(0); for j:=1 to nline do outtextxy(220,110+(j-1)*25,menu[menulevel,j]); end ; PROCEDURE redraw_menu; begin for j:=nline*30+10 downto 1 do begin setcolor(0); line(210,110+j,470,110+j); line(200,100+j,210,100+j); setcolor(8); if j<10 then begin setcolor(0); line(210,100+j,470,100+j); end else line(210,100+j,470,100+j); e nd ; for i:=260 downto 0 do begin putpixel(210+i,110,0); putpixel(200+i,100,0); end ; cleardevice; end ; PROCEDURE main_menu; begin settextstyle(chrus,0,2); draw_menu; repeat setcolor(0); outtextxy(220,110+(lastcursor-1)*25,menu[menulevel,lastcursor]); setcolor(7); outtextxy(220,110+(cursor-1)*25,menu[menulevel,cursor]); pressed:=readkey; if pressed=#0 then begin pressed:=readkey; move:=false; if (pressed=#80) and (cursor=nline) th en begin lastcursor:=nline; cursor:=1; move:=true; end ; if (pressed=#72) and (cursor=1) then begin lastcursor:=1; cursor:=nline; move:=true; end ; if (pressed=#80) and (cursor1) and not(move) then begin lastcursor:=cursor; dec(cursor); end ; end ; until pressed=#13; redraw_menu; if cursor=5 then about_program; if cursor=4 then about_metod; if (cursor=1) and (menulevel=3) then keyboard_input; if (c ursor=1) and (menulevel=4) then begin closegraph; halt; end ; if (cursor=2) and (menulevel=1) and (inputdata=false) then notok; if (cursor=2) and (menulevel=1) and (inputdata=true) then begin count_point_coord; draw_ways; output_graph; end ; if (curso r=2) and (menulevel=0) and (inputdata=true) then calculate; if (cursor=2) and (menulevel=0) and (inputdata=false) then notok; if (cursor=1) and (menulevel=2) and (calculatedata=false) then notok; if (cursor=1) and (menulevel=2) and (calculatedata=true) the n begin count_point_coord; draw_ways; draw_short_way; output_graph; end ; if (cursor=2) and (menulevel=2) and (calculatedata=true) then save; if (cursor=2) and (menulevel=2) and (calculatedata=false) then notok; if (cursor=2) and (menulevel=3) then notok; menulevel:=menugo[menulevel,cursor]; nline:=menuof[menulevel]; main_menu; end ; PROCEDURE welcomescreen; begin settextstyle(chrus,0,1); randomize; install_firewall; for i:=0 to messize do begin setcolor(4); outtextxy(10,iii*step+i*30,title[i]); end ; repeat fire; until keypressed; end ; BEGIN for i:=0 to 20 do for j:=0 to 20 do mas[i,j]:=-1; stars; inputdata:=false; calculatedata:=false; menulevel:=0; nline:=menuof[menulevel]; z2:=0; set_graph_mode; set_font; welcomescreen; closegraph; z2:=2; set_graph_mode; main_menu; repeat until keypressed; END.
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Энергоэффективность в России - это охлаждать кондиционером помещение, в котором слишком сильно топят батареи.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по программированию "Решение задачи о кратчайшем маршруте", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru