Эти прямые, записанные как функции f(x):
f1(x) = ax + b
f2(x) = cx + d
В точке пересечения прямых значения функций равны. Поэтому, приравняем их друг другу и решим получившееся уравнение:
ax + b = cx + d
ax - cx = d - b
(a - c)*x = d - b
x = (d - b) / (a - c)
Так находится координата икс точки пересечения. Далее находится игрек простой подстановкой найденного значения икс в любую из двух исходных функций (пускай в первую функцию).
Также, возможны частные случаи, которые надо предусмотреть в программе:
1) Если a = c но b ≠ d. Такие прямые параллельны друг другу, и не имеют точек пересечения. При попытке решения уравнения (см.выше) иксы сократятся, и получится всегда (при любом икс) неверное равенство вида 0 = b - d.
2) Если a = c и b = d. То есть, были введены одинаковые уравнения прямых (задана дважды одна и та же прямая, т.е. все точки этих уравнений совпадают). При попытке решения уравнения (см.выше) иксы сократятся, и b, d -тоже, и получится всегда (при любом икс) верное равенство вида 0 = 0.
Сама программа (на Паскале):
var
x, y, a, b, c, d: real;
begin
Writeln('Ввод коэффициентов уравнений двух прямых:');
Write('a= ');
Read(a);
Write('b= ');
Read(b);
Write('c= ');
Read(c);
Write('d= ');
Read(d);
if a = c then
begin
if b = d then
Writeln('Задана дважды одна и та же прямая. Все точки совпадают.')
else
Writeln('Заданы параллельные прямые. Точек пересечения нет.');
exit
end;
x := (d - b) / (a - c);
y := a * x + b;
Writeln('Координаты точки пересечения прямых:');
Writeln('x= ', x);
Writeln('y= ', y);
end.