Другие языки программирования и технологии

Помогите пожалуйста набрать задачу на паскале или на С++

Даны два множества точек на плоскости. Выбрать три различные точки первого множества так, чтобы треугольник с вершинами в этих точках накрывал все точки второго множества и имел минимальную площадь. КОММЕНТАРИИ Нужно устроить цикл по парам точек. Второе множество должно находиться внутри полученного треугольника(т.е. внутри трех точек,выбранных в первом мн-ве),если соответствующие координаты треугольника не принадлежат этому мн-ву(т.е. находятся за пределами второго мн-ва).
ВЛ
Влад Ли
165
class Point // точка
{
public:
Point(double x = 0, double y = 0) : m_x(x), m_y(y) {}
Point(const Point &pt) : m_x(pt.m_x), m_y(pt.m_y) {}

private:
double m_x; // координата x
double m_y; // координата y
};

class Triangle // треугольник
{
public:
Triangle(const Point &a, const Point &b, const Point &c) : m_a(a), m_b(b), m_c(c) {}

double Area() const
{
double Ret = 0;
// TODO: написать вычисление площади треугольника
return Ret;
}

BOOL InTriangle(const Point &pt) const
{
BOOL Ret = FALSE;
// TODO: написать находится ли точка pt внутри треугольника (TRUE - внутри, FALSE - нет)
return Ret;
}

private:
Point m_a; // вершина A
Point m_b; // вершина B
Point m_c; // вершина C
};

#define N 10
#define M 10

int _tmain(int argc, _TCHAR* argv[])
{

Point ArrayA[ N ]; // первое множество точек
Point ArrayB[ M ]; // второе множество точек

double AreaMin = -1; // минимальная площадь
int A = -1, B = -1, C = -1; // индексы точек

for (int i = 0; i < N-2; i++)
{
for (int j = i + 1; j < N-1; j++)
{
for (int k = j + 1; k < N; k++)
{
Triangle triangle(ArrayA[ i ], ArrayA[ j ], ArrayA[ k ]);

for (int m = 0; m < M; m++)
{
if (triangle.InTriangle(ArrayB[ m ]) && (AreaMin < 0 || triangle.Area() < AreaMin))
{
AreaMin = triangle.Area();
A = i;
B = j;
C = k;
}
}
}
}
}

if (AreaMin < 0)
{
printf("не найдено точек, соответствующих условию задачи\n");
}
else
{
printf("минимальная площадь %g, индексы точек %d, %d, %d\n", AreaMin, A, B, C);
}

return 0;
}
Олег Ким
Олег Ким
21 360
Лучший ответ
хм, только за деньги!