Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Пример выполнения задания






Программа 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;






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.