Массивы содержат вещественные числа.
=============
У каждой точки две(три, четыре и более координат) Зависит от плоскости и пространства. Следовательно первый массив содержит значения X, второй массив Y. Итого получается N известных точек, по которым нужо провести анализ по периметрам треугольников в двумерной плоскости. Это N задано условием.
============
Я Правильно понял? Если правильно, то проверка одинаковых точек легко выполняется(и без помощи) и может смогу помочь кодом. Код Visual Studio. В скобках точки, правее три длины отрезков по трем левым точкам.
Код
#include <iostream>
#include <ctime>
#include <cmath>
using namespace std;
struct tpoint{double x,y;}; //для корректного сложения сторон
void show(double *a,double *b,int N) //для себя показывал массив
{
for (int i=0;i<N;i++)
{
cout<<a[i]<<" "<<b[i]<<endl;
}
}
void create(double *a,double *b,int N) //создание массива
{
for (int i=0;i<N;i++)
{
a[i]=i;
b[i]=i+N;
}
}
double perimetr(double x,double y,double z) //функция периметра
{
return x+y+z;
}
void get(double *a,double *b,int N) //Поиск трех злостных точек
{
double len1,len2,len3; //длины отрезков на трех точках
double sum=0; //максимальный периметр
tpoint T1,T2,T3; //три точки
for (int i=0;i<N;i++) //Анализ всех комбинаций для построения треугольиков
for (int j=i+1;j<N;j++)
for (int k=j+1;k<N;k++)
{
//Вывод на экран длин трех отрезков
cout<<"("<<a[i]<<";"<<b[i]<<") ("<<a[j]<<";"<<b[j]<<") ("<<a[k]<<";"<<b[k]<<")"<<
"\t ";
cout<<sqrt(pow(fabs(a[i]-a[j]),2)+pow(fabs(b[i]-b[j]),2))<<" ";
cout<<sqrt(pow(fabs(a[j]-a[k]),2)+pow(fabs(b[j]-b[k]),2))<<" ";
cout<<sqrt(pow(fabs(a[k]-a[i]),2)+pow(fabs(b[k]-b[i]),2))<<" ";
//Запомиание длин в переменные
len1=sqrt(pow(fabs(a[i]-a[j]),2)+pow(fabs(b[i]-b[j]),2));
len2=sqrt(pow(fabs(a[j]-a[k]),2)+pow(fabs(b[j]-b[k]),2));
len3=sqrt(pow(fabs(a[k]-a[i]),2)+pow(fabs(b[k]-b[i]),2));
//вот тут сравниваем периметр с максимальным на данный момент периметром и если новый больше текущего, запоминаем точки и новый периметр
if (perimetr(len1,len2,len3)>sum)
{
T1.x=a[i]; T2.x=a[j]; T3.x=a[k];
T1.y=b[i]; T2.y=b[j]; T3.y=b[k];
sum=perimetr(len1,len2,len3);
};
cout<<endl;
}
//Выводим инфу на экран
cout<<"НАЙДЕНЫ ТОЧКИ"<<endl;
cout<<T1.x<<" "<<T1.y<<endl;
cout<<T2.x<<" "<<T2.y<<endl;
cout<<T3.x<<" "<<T3.y<<endl;
cout<<"ПЕРиМЕТР ТРЕУГОЛЬНИКА = "<<sum<<endl;
}
void main()
{
system("CLS");
double *Arr1,*Arr2;
int N=9;
Arr1=new double[N];
Arr2=new double[N];
create(Arr1,Arr2,N); //Создание массива из N элементов
show(Arr1,Arr2,N); //отображение массива на экране
get(Arr1,Arr2,N); //Поис злых точек
delete []Arr1; //освобождение памяти
delete []Arr2;
}
Если подойдет, то немного совсем доработать, если нет, то условие неоднозначое очень.