В заданном множестве точек определить, какие из них образуют треугольник наименьшей площади - C (СИ)

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

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

Доброго времени суток. Срочно нуждаюсь в помощи для решения следующей задачи:

В заданном множестве точек определить, какие из них образуют треугольник наименьшей площади

Скудно представляю как это должно делаться. Помогите советом/кодом.

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

textual
Листинг программы
void main(void)
{
int i,j,k,N,i1,j1,k1;
double a,b,c,p,s,mins;
double X[N],Y[N];
 
 
mins=1E30;
for(i=0;i<N;i++)
   {
    for(j=0;j<N;j++)
      {
       for(k=0;k<N;k++)
           {
           if((i==j) || (i==k) || (j==k))continue;
           a=sqrt((X[i]-X[j])*(X[i]-X[j])+(Y[i]-Y[j])*(Y[i]-Y[j]));
           b=sqrt((X[i]-X[k])*(X[i]-X[k])+(Y[i]-Y[k])*(Y[i]-Y[k]));
           c=sqrt((X[j]-X[k])*(X[j]-X[k])+(Y[j]-Y[k])*(Y[j]-Y[k]));
           p=(a+b+c)/2.0;
           s=sqrt(p*(p-a)*(p-b)*(p-c));
           if(s<mins)
              {
              mins=s;   
              i1=i;j1=j;k1=k; 
              }
           }
       } 
   }
}

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

В этом коде определяются функции для вычисления площади треугольника и поиска треугольника с наименьшей площадью в заданном множестве точек. Код начинается с объявления переменных:

  1. i, j, k, N — индексы точек
  2. a, b, c — длины сторон треугольника
  3. p — полупериметр треугольника
  4. s — площадь треугольника
  5. mins — минимальная площадь
  6. X[N], Y[N] — массивы координат точек Затем инициализируется переменная mins значением 1E30, что больше любой возможной площади треугольника. Переменные i1, j1, k1 инициализируются нулевыми значениями. Затем следует основной цикл, который перебирает все возможные комбинации из трех точек, чтобы найти треугольник с наименьшей площадью. Цикл состоит из трех вложенных циклов: внешний цикл перебирает первую точку, внутренний цикл перебирает вторую точку и еще один внутренний цикл перебирает третью точку. Когда находятся три точки, которые не являются одной и той же точкой, вычисляются длины сторон треугольника и его площадь. Если площадь меньше значения переменной mins, то текущая площадь становится новым значением mins, а индексы точек треугольника с наименьшей площадью сохраняются в переменных i1, j1, k1. После завершения цикла, найденный треугольник с наименьшей площадью может быть выведен на экран или использован в других функциях.

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

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