Предмет: Информатика, автор: Psihocover

Определите все пересекающиеся прямые из множества прямых, полученных соединением пар точек. Задано 3 пары чисел, определяющих 3 точки. (Программу писать на Pascal.
Как учитель объяснил эти точки на координатной плоскости т.е у нее есть координаты (x,y), так же сказал что решается через уравнение прямой y=k1x+b1 и там вывести надо формулу для k1 и b1. через (y-y1)/(y2-y1)=(x-x1)/(x2-x1))

Приложения:

Ответы

Автор ответа: Аноним
0
Для упрощения задачи не будем рассматривать вырожденные варианты, т.е. решаем её для случая, когда все три точки являются вершинами некоторого треугольника. Тогда эти точки и есть точки пересечения линий, на которых лежат стороны треугольника.
Воспользуемся известным уравнением прямой, проходящей через две точки с координатами (x₁;y₁) и (x₂;y₂):
Ax+By+C=0, где A=y₂-y₁, B=x₁-x₂, C=y₁x₂-x₁y₂

procedure Equation(x1,y1,x2,y2:real; var A,B,C:real);
begin
  A:=y2-y1;
  B:=x1-x2;
  C:=y1*x2-x1*y2
end;

var
  x,y,a,b,c:array[1..3] of real;
  i:integer;
begin
  Writeln('Введите парами чисел x,y координаты трех точек');
  for i:=1 to 3 do begin
    Write('Точка ',i,': '); Read(x[i],y[i])
  end;
  Equation(x[1],y[1],x[2],y[2],a[1],b[1],c[1]);
  Equation(x[1],y[1],x[3],y[3],a[2],b[2],c[2]);
  Equation(x[2],y[2],x[3],y[3],a[3],b[3],c[3]);
  { получены коэффициенты уравнений }
  for i:=1 to 3 do begin
    Write(a[i],'*x');
    if b[i]>=0 then Write('+');
    Write(b[i],'*y');
    if c[i]>=0 then Write('+');
    Writeln(c[i],'=0')
  end
end.

Тестовое решение:
Введите парами чисел x,y координаты трех точек
Точка 1: 1 5
Точка 2: 5 6
Точка 3: 4 2
1*x-4*y+19=0
-3*x-3*y+18=0
-4*x+1*y+14=0


Похожие вопросы
Предмет: История, автор: evgenijdenisenko628
Предмет: История, автор: dairissy
Предмет: Математика, автор: zdhanov241