Выбрать три точки, составляющие равносторонний треугольник наибольшего периметра - 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.
Объяснение кода листинга программы
- Переменная POINTSAMOUNT задает количество точек, которые нужно выбрать для составления равностороннего треугольника.
- Переменная EPS задает точность вычислений.
- Тип TPoint определяет структуру точки с координатами X и Y.
- Тип TPoints определяет массив точек типа TPoint.
- Функция Dist вычисляет расстояние между двумя точками.
- Функция Square вычисляет квадратный корень из суммы квадратов разности координат двух точек.
- Переменные A, B, C и MaxLength инициализируются нулевыми значениями.
- Цикл for используется для заполнения массива TPoints значениями координат точек.
- Цикл for используется для поиска трех точек, которые образуют равносторонний треугольник с максимальным периметром.
- Если найдены три точки, удовлетворяющие условиям, то выводится сообщение о том, что они образуют самый большой равносторонний треугольник.
- Переменная MaxLength обновляется с максимальным периметром найденного равностороннего треугольника.
- Переменные A, B и C обновляются с индексами найденных точек.
- Выводится сообщение с найденными координатами точек и длиной периметра.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д