1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
Семакин
Работа 3.6 Упр.14 ГДЗ Семакин 10 класс (Информатика)
Семакин, Хеннер, Шеина
10 класс
Класс
10
Предмет
Информатика
Автор
Семакин, Хеннер, Шеина

Работа 3.6 Упр.14 ГДЗ Семакин 10 класс (Информатика)

Задача
  1. Даны координаты $$n$$ ($$n \le 30$$) точек на плоскости: $$(x_1, y_1), \ldots, (x_n, y_n)$$. Найти номера пары точек, расстояние между которыми наибольшее (считать, что такая пара единственная).
Подробный ответ

Чтобы найти пару точек с наибольшим расстоянием, нужно перебрать все пары точек и для каждой вычислить расстояние по формуле

$$d=\sqrt{(x_i-x_j)^2+(y_i-y_j)^2}$$

Если найденное расстояние больше текущего максимума, запоминаем его и номера точек этой пары.

Так как по условию такая пара единственная, достаточно хранить одну лучшую пару.

var t: array [1..30] of record
  x, y: real
end;
r, d: extended;
i, j, n, t1, t2: integer;
begin
  write(‘Введите количество точек: ‘);
  readln(n);
  for i := 1 to n do
  begin
    write(‘Координаты ‘, i, ‘-й точки (X Y): ‘);
    readln(t[i].x, t[i].y);
  end;
  r := 0;
  for i := 1 to n — 1 do
    for j := i + 1 to n do
    begin
      d := sqrt((t[i].x — t[j].x) * (t[i].x — t[j].x) +
              (t[i].y — t[j].y) * (t[i].y — t[j].y));
      if d > r then
      begin
        r := d;
        t1 := i;
        t2 := j;
      end;
    end;
  writeln(‘Наибольшее расстояние между точками ‘, t1, ‘ и ‘, t2);
end.

Ответ: перебор всех пар точек с вычислением расстояния и запоминанием пары с максимальным значением.



Общая оценка
4.8 / 5
Другие учебники
Другие предметы