Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Met_АіП+ОДМ.doc
Скачиваний:
1
Добавлен:
04.12.2018
Размер:
440.32 Кб
Скачать
    1. Алгоритм задачі

Перед створенням програми необхідно визначити, які вхідні, вихідні та внутрішні дані будуть використані й які в них будуть типи даних.

Програма повинна знаходити множину пар вершин по введеній користувачем матриці суміжності. Для задання матриці суміжності та множини пар вершин в програмі нам необхідно використати масив даних цілочислового типу. Також перед вводом потрібно знати розмірність матриці суміжності, для цього потрібно ввести глобальну змінну цілочислового тип. А також для обходу матриць потрібні локальні цілочислові змінні (, ,).

Алгоритм може працювати тільки для неорієнтованих графів, тобто матриця суміжності повинна бути симетричною, тому необхідно зробити перевірку введеної матриці на симетричність.

Рис. 2. Алгоритм задачі побудови множини пар вершин з матриці суміжності.

    1. Реалізація програми

Використовуючи розроблене графічне представлення алгоритму (блок-схему) з легкістю можна створи програму.

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.

    1. Демонстрація роботи програми

Після закуску програми користувачу необхідно спочатку ввести розмірність матриці суміжності N та кожен елемент матриці суміжності. Цей процес показано на рис.3.

Рис.3. Введення вхідних даних у програму.

Після введення останнього елементу матриці суміжності програма автоматично обчислює та виводить результат на екран (рис. 4).

Рис.4. Виведення вихідних даних.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]