Type Point = record x: integer; y: integer; end; Line = record P: Point; Q: Point; Len: double; end;
procedure LineLength(var pL: Line); // Вычисляет и сохраняет значение длины отрезка begin pL.Len := sqrt(sqr(pL.Q.x - pL.P.x) + sqr(pL.Q.y - pL.P.y)) end;
var A, B, C, D: Point; AB, AC, AD, BC, BD, CD: Line;
begin writeln('Введите попарно координаты четырех точек'); readln(A.x, A.y, B.x, B.y, C.x, C.y, D.x, D.y); with AB do begin P.x := A.x; P.y := A.y; Q.x := B.x; Q.y := B.y; LineLength(AB); end; with AC do begin P.x := A.x; P.y := A.y; Q.x := C.x; Q.y := C.y; LineLength(AC); end; with AD do begin P.x := A.x; P.y := A.y; Q.x := D.x; Q.y := D.y; LineLength(AD); end; with BC do begin P.x := B.x; P.y := B.y; Q.x := C.x; Q.y := C.y; LineLength(BC); end; with BD do begin P.x := B.x; P.y := B.y; Q.x := D.x; Q.y := D.y; LineLength(BD); end; with CD do begin P.x := C.x; P.y := C.y; Q.x := D.x; Q.y := D.y; LineLength(CD); end; writeln(AB.Len, ' ', AC.Len, ' ', AD.Len, ' ', BC.Len, ' ', BD.Len, ' ', CD.Len); if AB.Len = CD.Len then begin // AB и CD - претенденты if AC.Len = BD.Len then // Нашли ABDC writeln('Параллелограмм ABDC') else if AD.Len = BC.Len then // Нашли ABCD writeln('Параллелограмм ABCD') end else if AC.Len = BD.Len then begin // AC и BD - претенденты if AD.Len = BC.Len then // Нашли ACBD writeln('Параллелограмм ACBD') else if AB.Len = CD.Len then // Нашли ABCD writeln('Параллелограмм ACDB') end else if AD.Len = BC.Len then begin // AD и ВС - претенденты if AC.Len = BD.Len then // Нашли ADBC writeln('Параллелограмм ADBC') else if AB.Len = CD.Len then // Нашли ADCB writeln('Параллелограмм ADCB') end else writeln('Параллелограмм построить невозможно'); end.
Контрольный прогон:
Введите попарно координаты четырех точек 5 1 10 3 8 9 3 6 5.3851648071345 8.54400374531753 5.3851648071345 6.32455532033676 7.61577310586391 5.8309518948453 Параллелограмм построить невозможно
Point = record
x: integer;
y: integer;
end;
Line = record
P: Point;
Q: Point;
Len: double;
end;
procedure LineLength(var pL: Line);
// Вычисляет и сохраняет значение длины отрезка
begin
pL.Len := sqrt(sqr(pL.Q.x - pL.P.x) + sqr(pL.Q.y - pL.P.y))
end;
var
A, B, C, D: Point;
AB, AC, AD, BC, BD, CD: Line;
begin
writeln('Введите попарно координаты четырех точек');
readln(A.x, A.y, B.x, B.y, C.x, C.y, D.x, D.y);
with AB do
begin
P.x := A.x; P.y := A.y; Q.x := B.x; Q.y := B.y; LineLength(AB);
end;
with AC do
begin
P.x := A.x; P.y := A.y; Q.x := C.x; Q.y := C.y; LineLength(AC);
end;
with AD do
begin
P.x := A.x; P.y := A.y; Q.x := D.x; Q.y := D.y; LineLength(AD);
end;
with BC do
begin
P.x := B.x; P.y := B.y; Q.x := C.x; Q.y := C.y; LineLength(BC);
end;
with BD do
begin
P.x := B.x; P.y := B.y; Q.x := D.x; Q.y := D.y; LineLength(BD);
end;
with CD do
begin
P.x := C.x; P.y := C.y; Q.x := D.x; Q.y := D.y; LineLength(CD);
end;
writeln(AB.Len, ' ', AC.Len, ' ', AD.Len, ' ', BC.Len, ' ', BD.Len, ' ', CD.Len);
if AB.Len = CD.Len then begin
// AB и CD - претенденты
if AC.Len = BD.Len then // Нашли ABDC
writeln('Параллелограмм ABDC')
else
if AD.Len = BC.Len then // Нашли ABCD
writeln('Параллелограмм ABCD')
end
else
if AC.Len = BD.Len then begin
// AC и BD - претенденты
if AD.Len = BC.Len then // Нашли ACBD
writeln('Параллелограмм ACBD')
else
if AB.Len = CD.Len then // Нашли ABCD
writeln('Параллелограмм ACDB')
end
else
if AD.Len = BC.Len then begin
// AD и ВС - претенденты
if AC.Len = BD.Len then // Нашли ADBC
writeln('Параллелограмм ADBC')
else
if AB.Len = CD.Len then // Нашли ADCB
writeln('Параллелограмм ADCB')
end
else
writeln('Параллелограмм построить невозможно');
end.
Контрольный прогон:
Введите попарно координаты четырех точек
5 1 10 3 8 9 3 6
5.3851648071345 8.54400374531753 5.3851648071345 6.32455532033676 7.61577310586391 5.8309518948453
Параллелограмм построить невозможно
Введите попарно координаты четырех точек
5 1 10 4 8 9 3 6
5.8309518948453 8.54400374531753 5.3851648071345 5.3851648071345 7.28010988928052 5.8309518948453
Параллелограмм ABCD
Введите попарно координаты четырех точек
5 1 8 9 10 4 3 6
8.54400374531753 5.8309518948453 5.3851648071345 5.3851648071345 5.8309518948453 7.28010988928052
Параллелограмм ACBD