Найти координаты вершин треугольника - C (СИ)
Формулировка задачи:
Доброго времени суток.
Формулировка задания следующая:
В заданном множестве точек определить, какие из них образуют треугольник наименьшей площадиУ меня есть проблема:
мне нужно в дополнение к этому коду указать, какой именно треугольник наименьший по площади и указать координаты вершин этого треугольника. Мне подсказывали, что можно найти эти точки через структуру, которая будет содержать точки и площадь. Помогите кодом или советом-подсказкой. Буду очень признателен. Код:#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int i,j,k,N,i1,j1,k1;
double a,b,c,p,s,mins;
cout << "Введите количество точек: \n";
cin >> N;
double * X = new double[N];
double * Y = new double[N];
for (int i = 0; i < N; i++)
{
cout << "Введите x" << i << endl;
cin >> X[i];
cout << "Введите y" << i << endl;
cin >> Y[i];
}
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 && s != 0)
{
mins=s;
i1=i;j1=j;k1=k;
}
}
}
}
cout << s << endl;
_getch();
delete[] X;
delete[] Y;
return 0;
}Решение задачи: «Найти координаты вершин треугольника»
textual
Листинг программы
printf("Номер вершины=%d, координаты: X=%f Y=%f",i1,X[i1],Y[i1]);
Объяснение кода листинга программы
В данном коде выполняется следующие действия:
- Выводится номер вершины треугольника.
- Выводятся координаты вершины треугольника (X и Y). В данном коде используются следующие переменные:
- i1 - номер вершины треугольника.
- X - массив координат X вершин треугольника.
- Y - массив координат Y вершин треугольника. Выполняется цикл, который проходит по всем вершинам треугольника и выводит их координаты.