Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Звіт
про виконання лабораторної роботи №6
на тему:
«Дослідження алгоритмів розпізнавання образів.
Алгоритм максимінної відстані»
program _Points;
uses graph, crt;
const POINT_COUNT = 20;
T = 4;
var gd, gm: integer;
i, j, k, setcount: integer;
x, y, dist: real;
inp: text;
istr: string;
sets: array [1..POINT_COUNT, 0..POINT_COUNT] of integer;
points: array [1..POINT_COUNT, 1..2] of real;
flag, added: boolean;
begin
gd := detect;
initgraph(gd, gm, '');
line(0, 479, 0, 0);
line(0, 479, 640, 479);
assign(inp, 'points.dat');
reset(inp);
for i := 1 to POINT_COUNT do
begin
str(i, istr);
readln(inp, x, y);
points[i, 1] := x;
points[i, 2] := y;
setcolor(white);
settextstyle(2, 0, 0);
outtextxy(trunc(x * 20) - 8 * length(istr), trunc(479 - y * 20) - 5, istr);
setcolor(lightgreen);
circle(trunc(x * 20), trunc(479 - y * 20), 2);
end;
setcount := 0;
for i := 1 to POINT_COUNT do
begin
added := false;
for j := 1 to setcount do
begin
flag := true;
for k := 1 to sets[j, 0] do
if (sqrt(sqr(points[i, 1] - points[sets[j, k], 1]) + sqr(points[i, 2] - points[sets[j, k], 2])) > T)
then flag := false;
if (flag and (sets[j, 0] > 0)) then
begin
inc(sets[j, 0]);
sets[j, sets[j, 0]] := i;
added := true;
break;
end;
end;
if (not added) then
begin
inc(setcount);
sets[setcount, 0] := 1;
sets[setcount, 1] := i;
end;
end;
close(inp);
readln;
closegraph;
for i := 1 to setcount do
begin
write('Mno*yna ', i, ': ');
for j := 1 to sets[i, 0] do
write (sets[i, j], ' ');
writeln;
end;
readln;
end.