Дано множество точек с координатами ** плоскости.Написать программу, которая использует...

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

Дано множество точек с координатами на плоскости.
Написать программу, которая использует подпрограммы и выведит на экран наименьшее расстояние между двумя точками.


Информатика (19 баллов) | 46 просмотров
0

Паскаль?

Дан 1 ответ
0 голосов
Правильный ответ

Const
  nm = 50;{максимальная длина массива}

type
  Mas = array[1..nm] of real;

var
  i, j, n: integer;
  x, y: Mas;
  d, dmin: real;

function SqrDist(p, q: integer): real;
{ Возвращает квадрат расстояния между точками }
begin
  SqrDist := sqr(x[q] - x[p]) + sqr(y[q] - y[p])
end;

begin
  Write('Введите количество точек -> ');
  Readln(n);
  Writeln('Вводите координаты каждой точки (x,y) через пробел');
  for i := 1 to n do
  begin
    Write('точка ', i, ': ');
    Readln(x[i], y[i]);
  end;
  dmin := 1e10; { значение, заведомо большее реально возможного }
  for i := 1 to n do
    for j := i + 1 to n do
    begin
      d := SqrDist(i, j);
      if dmin > d then dmin := d
    end; 
  Writeln('Минимальное расстояние между точками равно ', sqrt(dmin):0:4)
end.

Тестовое решение:

Введите количество точек -> 5
Вводите координаты каждой точки (x,y) через пробел
точка 1: 3.4 7.2
точка 2: -3 8.6
точка 3: -4.5 -5.1
точка 4: 6 -2
точка 5: 0 9
Минимальное расстояние между точками равно 3.0265


(142k баллов)