Выбрать три точки, составляющие равносторонний треугольник наибольшего периметра - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Выбрать три разные точки заданного на плоскости множества точек, составляющие равносторонний треугольник наибольшего периметра. // [10_3]

Решение задачи: «Выбрать три точки, составляющие равносторонний треугольник наибольшего периметра»

textual
Листинг программы
const
  POINTSAMOUNT = 6; {Количество точек. Да, я надмозг.}
  EPS = 1E-2; {Точность}
type
  TPoint = record
    X,Y: Real;
  end;
  
  TPoints = array[1..POINTSAMOUNT] of TPoint;
  
function Dist(P1, P2: TPoint): Real;  
begin
  Dist := Sqrt(Sqr(P1.X-P2.X)+Sqr(P1.Y-P2.Y));
end;
 
function Square(const L1, L2, L3: Real): Real;
var
  P: Real;
begin
  P := (L1+L2+L3)/2;
  Square := Sqrt(P*(P-L1)*(P-L2)*(P-L3));
end;
  
var
  Points: TPoints;
  I, J, K,
  A, B, C: Word;
  L1, L2, L3, MaxLength: Real;
begin
  A := 0;
  for I := 1 to POINTSAMOUNT do
  begin
    Write('X[',I,'] = '); ReadLn(Points[I].X);
    Write('Y[',I,'] = '); ReadLn(Points[I].Y);
  end;
  
  for I := 1 to POINTSAMOUNT-2 do
    for J := I+1 to POINTSAMOUNT-1 do
      for K := J+1 to POINTSAMOUNT do
      begin
        L1 := Dist(Points[I],Points[J]);
        L2 := Dist(Points[I],Points[K]);
        L3 := Dist(Points[K],Points[J]);
        if (Abs(Square(L1,L2,L3))>EPS) and (Abs((L1+L2+L3)/L1-3)<EPS) then {найден новые равносторонний треугольник}
        begin
          if L1+L2+L3>MaxLength then
          begin
            MaxLength := L1+L2+L3;
            A := I;
            B := J;
            C := K;
          end;
        end;
      end;
  WriteLn('Точки ',A,', ',B,', ',C,' образуют самый большой равносторонний треугольник, периметром ', MaxLength:4:2);
end.

Объяснение кода листинга программы

  1. Переменная POINTSAMOUNT задает количество точек, которые нужно выбрать для составления равностороннего треугольника.
  2. Переменная EPS задает точность вычислений.
  3. Тип TPoint определяет структуру точки с координатами X и Y.
  4. Тип TPoints определяет массив точек типа TPoint.
  5. Функция Dist вычисляет расстояние между двумя точками.
  6. Функция Square вычисляет квадратный корень из суммы квадратов разности координат двух точек.
  7. Переменные A, B, C и MaxLength инициализируются нулевыми значениями.
  8. Цикл for используется для заполнения массива TPoints значениями координат точек.
  9. Цикл for используется для поиска трех точек, которые образуют равносторонний треугольник с максимальным периметром.
  10. Если найдены три точки, удовлетворяющие условиям, то выводится сообщение о том, что они образуют самый большой равносторонний треугольник.
  11. Переменная MaxLength обновляется с максимальным периметром найденного равностороннего треугольника.
  12. Переменные A, B и C обновляются с индексами найденных точек.
  13. Выводится сообщение с найденными координатами точек и длиной периметра.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы