Определить по координатам точек, являются ли они вершинами параллелограмма - Pascal ABC
Формулировка задачи:
Доброго времени суток программисты! Вот такая задачка вызвала затруднение:
С клавиатуры вводятся четыре пары координат точек в произвольном порядке(гарантируется, что они не лежат на одной прямой), определить являются ли эти точки вершинами параллелограмма.
Подскажите пожалуйста с программой или с алгоритмом осуществления, заранее благодарен.
Решение задачи: «Определить по координатам точек, являются ли они вершинами параллелограмма»
textual
Листинг программы
uses crt;
type point=record //тип точка
x,y:real;
end;
const t=0.001;//точность сравнения вещественных чисел
var a,b,c,d:point;
begin
writeln('Введите координаты 4 точек, не лежащих на 1 прямой:');
readln(a.x,a.y,b.x,b.y,c.x,c.y,d.x,d.y);
//если прямые попарно вертикальны
if(((a.x=b.x)and(c.x=d.x)) or((a.x=c.x)and(b.x=d.x)) or((a.x=d.x)and(b.x=c.x))
//или угловые коэффициенты попарно равны
or((abs((a.y-b.y)/(a.x-b.x)-(c.y-d.y)/(c.x-d.x))<t))
or((abs((a.y-c.y)/(a.x-c.x)-(b.y-d.y)/(b.x-d.x))<t))
or((abs((a.y-d.y)/(a.x-d.x)-(b.y-c.y)/(b.x-c.x))<t)))
then write('Это вершины параллелограмма')
else write('Это не вершины параллелограмма')
end.
Объяснение кода листинга программы
- Создается тип данных
point, который представляет точку с координатами x и y. - Задаются переменные a, b, c и d типа point для хранения координат точек.
- Выводится сообщение для ввода координат 4 точек.
- Проверяется, являются ли прямые, соединяющие точки, вертикальными или горизонтальными. Если это так, то выводится сообщение
Это вершины параллелограмма. - Если прямые не являются ни вертикальными, ни горизонтальными, то проверяется, равны ли угловые коэффициенты попарно. Если это так, то выводится сообщение
Это вершины параллелограмма. - Если ни одно из условий не выполняется, то выводится сообщение
Это не вершины параллелограмма.