Программа
program Moduli;{íàçâà ïðîãðàìè}
uses Crt,Vectors;{ï³äêëþ÷åííÿ ìîäóë³â}
var A:array[1..1000] of Vector;{ìàñèâ âåêòîð³â}
i,j,l,N,ik,jk,lk:integer;{i,j,l-ë³÷èëüíèê,N-ê³ëüê³ñòü òî÷îê,ik,jk,lk-øóêàí³ òî÷êè}
Max:real;{Max-ìàêñèìàëüíèé êóò}
M1,M2,M3:Vector;{äîäàòêîâi çì³ííà}
begin
clrscr;{î÷èñòêà åêðàíó}
randomize;{àêòèâàö³ÿ ãåíåðàòîðà âèïàäêîâèõ ÷èñåë}
writeln('Ïîøóê 3 òî÷îê ÿê³ º êîîðäèíàòàìè òðèêóòíèêà ç íàéá³ëüøèì êóòîì.');
write('Ââåä³òü ê³ëüê³ñòü òî÷îê N -> ');
read(N);{ç÷èòóâàííÿ N}
for i:=1 to 2*N do begin{çàïîâíåííÿ ìàñèâó âèïàäêîâèìè ÷èñëàìè}
A[i].x:=random(25)+1;
A[i].y:=random(25)+1;
end;
for i:=1 to 2*N do writeln('Âåêòîð ¹',i,' õ=',A[i].x:3:2,'ó=',A[i].y:3:2);{âèâ³ä çôîðìîâàíèõ òî÷îê}
ik:=1;{çà ïîòð³áí³ òî÷êè ïðèéìàºì 1,2,3}
jk:=2;
lk:=3;
max:=0;
for i:=1 to 2*N-2 do
for j:=2 to 2*N-1 do
for l:=3 to 2*N do begin
vSMn(A[i],A[j],M1);{ñêàëÿðíå ìíîæåííÿ}
vSMn(A[j],A[l],M2);
vSMn(A[l],A[i],M3);
if((vDovz(M1)/vDovz(A[j])*vDovz(A[l]))>Max)or
(vDovz(M2)/vDovz(A[l])*vDovz(A[i]))>Max)or
(vDovz(M3)M3/vDovz(A[i])*vDovz(A[j]))>Max))
then begin
Max:=M/vDovz(A[j])*vDovz(A[l]);
ik:=i;
jk:=j;
lk:=l;
end;
end;
writeln(' ',ik,' ',jk,' ',lk);
readln;
readln;
end.
Модуль
Unit Vectors;{³ì'ÿ ìîäóëÿ}
interface
{²íòåðôåéñíà ÷àñòèíà. Òóò çáåð³ãàþòüñÿ îïèñè âñèõ ãëîáàëüíèõ îá'ºêò³â ìîäóëÿ
(òèï³â, êîíñòàíò, çì³ííèõ ³ ï³äïðîãðàì), ÿê³ ïîâèíí³ áóòè äîñòóïí³ â îñíîâí³é
ïðîãðàì³ ÷è ³íøèì ìîäóëÿì Ïàñêàëÿ}
Type Vector=record{îãîëîøåííÿ çàïèñó Vector}
x,y:real;
end;
procedure vPlus(t1,t2,t3:Vector);{Îïèñ ïðîöåäóðè äîäàâàííÿ âåêòîð³â}
procedure vMinus(t1,t2,t3:Vector);{Îïèñ ïðîöåäóðè â³äí³ìàííÿ âåêòîð³â}
function vSMn(t1,t2,t3:Vector):real;{Îïèñ ôóíêö³¿ ñêàëÿðíîãî ìíîæåííÿ âåêòîð³â}
procedure vMnCh(t1:Vector;Ch:real;t2:Vector);{Îïèñ ïðîöåäóðè ìíîæåííÿ
âåêòîðà íà ÷èñëî}
function vDovz(t:Vector):real;{Îïèñ ôóíêö³¿ äîâæèíà âåêòîðà}
implementation
{Âèêîíóâàíà ÷àñòèíà. ̳ñòèòü îïèñè ïðîãðàì, îá'ÿâëåíèõ  ³íòåðôåéñí³é ÷àñòèí³.
 í³é ìîæóòü îá'ÿâëÿòèñÿ ëîêàëüí³ äëÿ ìîäóëÿ îá'ºêòè - äîïîì³æí³ òèïè,
êîíñòàíòè, çì³íí³ ³ áëîêè, à òàêîæ ì³òêè}
{ uses crt;}{----------------------------------------------------------------------------}
procedure vPlus;{Îïèñ ïðîöåäóðè äîäàâàííÿ âåêòîð³â}
begin
t3.x:=t1.x+t2.x;{äîäàâàííÿ õ}
t3.y:=t1.y+t2.y;{äîäàâàííÿ ó}
end;
procedure vMinus;{Îïèñ ïðîöåäóðè â³äí³ìàííÿ âåêòîð³â}
begin
t3.x:=t1.x-t2.x;{â³äí³ìàííÿ õ}
t3.y:=t1.y-t2.y;{â³äí³ìàííÿ ó}
end;
function vSMn;{Îïèñ ôóíêö³¿ ñêàëÿðíîãî ìíîæåííÿ âåêòîð³â}
begin
vSMn:=t1.x*t2.x+t1.y*t2.y;{ñêàëÿðíå ìíîæåííÿ âåêòîð³â}
end;
procedure vMnCh;{Îïèñ ïðîöåäóðè ìíîæåííÿ âåêòîðà íà ÷èñëî}
begin
t2.x:=t1.x*Ch;{ìíîæåííÿ õ íà ÷èñëî}
t2.y:=t1.y*Ch;{ìíîæåííÿ ó íà ÷èñëî}
end;
function vDovz;{Îïèñ ôóíêö³¿ äîäàâàííÿ âåêòîð³â}
begin
vDovz:=sqrt(sqr(t.x)+sqr(t.y));
end;
end.{çàê³í÷åííÿ âèêîíóâàíî¿ ÷àñòíèíè}