Помогите умоляю
nДаны координаты точек А(х1,у1), В(х2,у2), С(х3,у3). Найти, ка- кие две точки расположены ближе друг к другу. Координаты ввести с клавиатуры.
n(Паскаль через if)
Ответ
5/5 (1 оценка)
1
Wani4kaa 2 года назад
Светило науки - 68 ответов - 3711 раз оказано помощи

Функционал

Ввести с клавиатуры координаты x, y точек A, B, C. Вывести две точки, расстояние между которыми минимально, а также само расстояние между ними.


Алгоритм решения

Формула расстояния между двумя точками на плоскости:

[tex]dst(A, B)=sqrt{(x_A-x_B)^2+(y_A-y_B)^2}[/tex]

Воспользуемся этой формулой. Предположим, что между точками A и B наименьшее расстояние. Проверим - если между точками B и C расстояние меньше, то обновим ответ. То же самое сделаем с точками A и C.


Код

В ansdst храним минимальное расстояние, в ans - названия двух ближайших друг к другу точек

var x1, y1, x2, y2, x3, y3, ansdst: real;

 ans: string;

begin

 read(x1, y1, x2, y2, x3, y3);

 ans:='A B';

 ansdst:=sqr(x2-x1)+sqr(y2-y1);

 if sqr(x2-x3)+sqr(y2-y3)>ansdst then

 begin

   ans:='B C';

   ansdst:=sqr(x2-x3)+sqr(y2-y3);

 end;

 if sqr(x1-x3)+sqr(y1-y3)>ansdst then

 begin

   ans:='A C';

   ansdst:=sqr(x1-x3)+sqr(y1-y3);

 end;

 writeln(ans);

 writeln(sqrt(ansdst));

End.

triolana 2 года назад

Вообще-то достаточно сравнивать квадраты расстояний. Тогда не требуется достаточно сложная функция извлечения квадратного корня.

Wani4kaa 2 года назад

Так можно, вроде, избежать и ошибок с погрешностями. Исправлю, спасибо.