(B.x-D.x)); P.y=((C.y-A.y)*
(B.x-D.x));
P.y=((C.y-A.y)*(D.y*B.x-B.y*D.x)+(D.y-B.y)* (C.y*A.x-A.y*C.x))/((C.y-A.y)*(B.x-D.x)-(C.x-A.x)* (B.y-D.y))
Знаменатели у обеих дробей одинаковы, они равны 0, если исходные прямые параллельны или совпадают.
Конкретная реализация решения задачи не представляет особых трудностей и мы не будем ее приводить.
Замечание, которое, возможно, следовало сделать раньше. Последние 2 формулы правильны с точки зрения математики, но при разумных данных будут, скорее всего, выдавать ерунду, если вы запишете их в программе прямо в таком виде. Дело в том, что мы использовали переменные типа integer, а integer, как вы знаете, имеет весьма ограниченный диапазон значений. Эта проблема актуальна для всех написанных нами функций, но мы считаем ее относящейся к кодированию и потому игнорируем. Можно только заметить, что при изменении определения типа point (замене integer на longint или double) тексты наших функций вообще не нужно будет менять.
А теперь - еще пара упражнений.
Пример
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа