Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Пример выполнения задания⇐ ПредыдущаяСтр 29 из 29
Программа LW4 иллюстрирует выполнение основных операций над ориентированным графом. Предполагается, что описание класса – графа и реализация его методов содержатся в модуле Graphs. tpu. Файл с исходными данными LW4Dat.txt содержит информацию о следующем графе: Множество узлов – {A, B, C, D, E, F}, множество дуг – {(A, B), (A, D), (B, C), (C, A), (C, D), (D, E), (E, C), (E, F), (F, C)}. После построения в граф включаются узел X и дуга между узлами F и X, затем исключается узел E. После каждого изменения графа выполняются его обход и вывод. // Лабораторная работа 4. Ориентированные графы. // Выполнил Сергеев Андрей, группа 500. // Исходные данные - узлы и дуги графа - в файле LW4Dat.txt // Результаты работы помещаются в файл LW4Res.txt program LW4; {$APPTYPE CONSOLE} Uses SysUtils, Graphs in 'Graphs.pas'; Var Graph: tOrGraph; // экземпляр ориентированного графа fDat, fRes: Text; // файлы исходных данных и результатов Node1, Node2: pNode; // вспомогательные указатели на узлы графа v1, v2: tValue; // значения элементов графа Begin Try Assign(fDat, ‘LW4Dat.txt'); Reset(fDat); Assign(fRes, 'LW4Res.txt'); Rewrite(fRes); WriteLn(fRes, 'Работа с графом'); Graph: = tOrGraph.Create; // создание экземпляра графа Graph.Build(fDat); // построение графа Graph.Revision(fRes); // просмотр графа и вывод элементов в файл fRes WriteLn(fRes, 'Число узлов графа: ', Graph.NodesNumber); WriteLn(fRes, 'Число дуг графа: ', Graph.ArcsNumber); // Включение узла со значением 'X' v1: ='X'; WriteLn(fRes, 'Значение включаемого элемента = ', v1); Graph.AddNode(v1); Graph.Revision(fRes); // Включение дуги между узлами 'F' и 'X' v1: ='F'; v2: ='X'; WriteLn(fRes, 'Включается дуга между узлами ', v1, ' и ', v2); Node1: =Graph.NodeAddr(v1); Node2: =Graph.NodeAddr(v2); if (Node1< > nil) and (Node2< > nil) then Graph.AddArc(Node1, Node2); Graph.Revision(fRes); // просмотр графа // Исключение узла 'E' с инцидентными ему дугами v1: ='E'; WriteLn(fRes, 'Исключается узел ', v1); Node1: =Graph.NodeAddr(v1); if Node1< > nil then Graph.DeleteNode(Node1); Graph.Revision(fRes); Graph.Free;
|