Помогите умоляю Даны координаты точек А(х1,у1), В(х2,у2), С(х3,у3). Найти, ка- кие две...

0 голосов
75 просмотров

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


Информатика (41 баллов) | 75 просмотров
Дан 1 ответ
0 голосов

Функционал

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


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

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

dst(A, B)=\sqrt{(x_A-x_B)^2+(y_A-y_B)^2}

Воспользуемся этой формулой. Предположим, что между точками 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.

(3.7k баллов)
0

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

0

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