Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
Інститут КНІТ
Кафедра ПЗ
ЗВІТ
До лабораторної роботи № 8
На тему: “ Визначення типів графів. Файли.”
З дисципліни : " Дискретна математика"
Лектор:
Сердюк П.В.
Виконав:
ст. гр. ПІ-12
Прийняв:
Львів – 2007
Завдання:
Використовуючи даний спосіб представлення графа, зчитати з файлу граф, зберегти його даним способом у програмі. Визначити якого типу є граф.
У звіті описати даний спосіб задання графів.
Коротко описати функції для читання/запису файлів на мові Pascal.
Сформулювати переваги та недоліки даного способу представлення графу з алгоритмічної точки зору.
Звіт оформити за вимогами шаблону.
Варіант 5. Матриця суміжності. Перевірка на мультиграф.
Короткі теоретичні відомості
У програмі ви використовуємо один із способів подання графів: Матриця суміжності.
Перевага даного способу – швидкий доступ до інформації: за один крок можна одержати відповідь на питання чи існує ребро з Vi y Vj.
Недолік полягає у тому що незалежно від кількості ребер обсяг пам’яті становить n2.
Для читання та запису файлів були використані такі функції:
assign - Зв’язування файлу із файловою змінною
reset - Відкриття файлу для читання
rewrite - Відкриття файлу для запису
read, readln - Читання з файлу
write, writeln - Запис у файл
close - Закриття файлу
Текст програми
uses crt, graph;
const m=25;
var
i,j,n: integer;
a:array [1..m,1..m] of integer;
f,g:text;
gtype,otype: integer;
begin
assign(f,'read.txt');
assign(g,'wrie.txt');
clrscr;
reset(f);
rewrite(g);
readln(f,n);
for i:=1 to n do
begin
for j:=1 to n do
read(f,a[i][j]);
readln(f);
end;
for i:=1 to n do
begin
for j:=1 to n do
write(g,a[i][j],' ');
writeln(g);
end;
otype:=1;
for i:=1 to n do
for j:=1 to n do
if a[i][j]<>a[j][i] then otype:=2;
if otype=1 then
begin
gtype:=1;
for i:=1 to n do
for j:=1 to n do
begin
if (a[i][j]>1)and(gtype<>3) then gtype:=2;
if a[i][i]=1 then gtype:=3;
end;
end else
if otype=2 then
begin gtype:=4;
for i:=1 to n do
for j:=1 to n do
begin
if (a[i][i]=1)and(gtype<>5) then gtype:=4;
if a[i][j]>1 then gtype:=5;
end;
end;
if gtype=1 then write(g,'prostyi graph');
if gtype=2 then write(g,'multigraph');
if gtype=3 then write(g,'psevdograph');
if gtype=4 then write(g,'orientovanyi graph');
if gtype=5 then write(g,'orientovanyi multigraph');
close(f);
close(g);
end.
Висновок:
На цій лабораторній роботі я краще ознайомився із способами подання графів та вдосконалив свої вміння по використанню файлів для читання та запису інформації.