
- •Методичні вказівки
- •6.050101 «Комп`ютерні науки»
- •Завдання для розрахунково-графічної роботи
- •Приклад розв’язання задачі
- •Постановка задачі
- •Розв’язання задачі
- •Алгоритм задачі
- •Реалізація програми
- •Демонстрація роботи програми
- •Завдання для самостійного опрацювання
- •Логіка висловлювань
- •Теорія множин
- •Комбінаторний аналіз
- •Теорія графів
- •Література
-
Алгоритм задачі
Перед створенням програми необхідно визначити, які вхідні, вихідні та внутрішні дані будуть використані й які в них будуть типи даних.
Програма повинна знаходити
множину пар вершин по введеній користувачем
матриці суміжності. Для задання матриці
суміжності та множини пар вершин в
програмі нам необхідно використати
масив даних цілочислового типу. Також
перед вводом потрібно знати розмірність
матриці суміжності, для цього потрібно
ввести глобальну змінну цілочислового
тип. А також для обходу матриць потрібні
локальні цілочислові змінні (,
,
).
Алгоритм може працювати тільки для неорієнтованих графів, тобто матриця суміжності повинна бути симетричною, тому необхідно зробити перевірку введеної матриці на симетричність.
Рис. 2. Алгоритм задачі побудови множини пар вершин з матриці суміжності.
-
Реалізація програми
Використовуючи розроблене графічне представлення алгоритму (блок-схему) з легкістю можна створи програму.
program SMatrixToVList; uses crt; var SMatrix:array [0..50, 0..50] of Integer; VList:array [0..100,0..1] of Integer; N, M:Integer; i, j, k:Integer;
BEGIN clrscr;
repeat Write('Введіть розмір матриці суміжності N:'); ReadLn(N); if not((N>1) and (N<=50)) then WriteLn('!Недопустиме значення!'); until ((N>1) and (N<=50));
WriteLn; WriteLn('Введіть елементи матриці суміжності:'); for i:=0 to N-1 do for j:=0 to N-1 do begin repeat Write('M[', i+1, ', ', j+1, ']: '); ReadLn(SMatrix[i,j]); if not(Smatrix[i,j]>=0) then WriteLn('!Недопустиме значення!'); until (Smatrix[i,j]>=0); end;
for i:=0 to N-1 do for j:=0 to N-1 do begin if not(SMatrix[i,j]=Smatrix[j,i]) then begin WriteLn('Введена матриця суміжності не є неорієнтованою!'); ReadLn; halt; end; end;
M:=0; for i:=0 to N-1 do for j:=i to N-1 do
for k:=1 to SMatrix[i,j] do begin VList[M,0] := i+1; VList[M,1] := j+1; M := M + 1; end;
WriteLn; WriteLn('Множина пар вершин: '); for i:=0 to M-1 do WriteLn(i+1,'. v', VList[i,0], ' - ', 'v', VList[i,1]); readln; END. |
-
Демонстрація роботи програми
Після закуску програми користувачу необхідно спочатку ввести розмірність матриці суміжності N та кожен елемент матриці суміжності. Цей процес показано на рис.3.
Рис.3. Введення вхідних даних у програму.
Після введення останнього елементу матриці суміжності програма автоматично обчислює та виводить результат на екран (рис. 4).
Рис.4. Виведення вихідних даних.