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

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

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

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

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

textual
Листинг программы
  1. const
  2.   POINTSAMOUNT = 6; {Количество точек. Да, я надмозг.}
  3.   EPS = 1E-2; {Точность}
  4. type
  5.   TPoint = record
  6.     X,Y: Real;
  7.   end;
  8.  
  9.   TPoints = array[1..POINTSAMOUNT] of TPoint;
  10.  
  11. function Dist(P1, P2: TPoint): Real;  
  12. begin
  13.   Dist := Sqrt(Sqr(P1.X-P2.X)+Sqr(P1.Y-P2.Y));
  14. end;
  15.  
  16. function Square(const L1, L2, L3: Real): Real;
  17. var
  18.   P: Real;
  19. begin
  20.   P := (L1+L2+L3)/2;
  21.   Square := Sqrt(P*(P-L1)*(P-L2)*(P-L3));
  22. end;
  23.  
  24. var
  25.   Points: TPoints;
  26.   I, J, K,
  27.   A, B, C: Word;
  28.   L1, L2, L3, MaxLength: Real;
  29. begin
  30.   A := 0;
  31.   for I := 1 to POINTSAMOUNT do
  32.   begin
  33.     Write('X[',I,'] = '); ReadLn(Points[I].X);
  34.     Write('Y[',I,'] = '); ReadLn(Points[I].Y);
  35.   end;
  36.  
  37.   for I := 1 to POINTSAMOUNT-2 do
  38.     for J := I+1 to POINTSAMOUNT-1 do
  39.       for K := J+1 to POINTSAMOUNT do
  40.       begin
  41.         L1 := Dist(Points[I],Points[J]);
  42.         L2 := Dist(Points[I],Points[K]);
  43.         L3 := Dist(Points[K],Points[J]);
  44.         if (Abs(Square(L1,L2,L3))>EPS) and (Abs((L1+L2+L3)/L1-3)<EPS) then {найден новые равносторонний треугольник}
  45.         begin
  46.           if L1+L2+L3>MaxLength then
  47.           begin
  48.             MaxLength := L1+L2+L3;
  49.             A := I;
  50.             B := J;
  51.             C := K;
  52.           end;
  53.         end;
  54.       end;
  55.   WriteLn('Точки ',A,', ',B,', ',C,' образуют самый большой равносторонний треугольник, периметром ', MaxLength:4:2);
  56. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы