Задача такая: Из заданного на плоскости множества точек выбрать 3, не лежащих на одной прямой и состовляющих треугольник наименьшей площади.
Как я понимаю плоскость задаем в виде двумерного массива?А что с этим массивом потом делать?
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{ clrscr();
int X[10],Y[10],i,j,k;
float s,Smin,a,b,c,p;
for (i=0;i<=9;i++)
{
X[i]=random(100);
Y[i]=random(100);
}
for (i=0;i<=9;i++)
{
a=abs(X[i]-Y[i]);
for (j=1;j<=9;j++)
{
b=abs(X[j]-Y[j]);
for (k=2;k<=9;k++)
{
c=abs(X[k]-Y[k]);
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
if (i==0) Smin=s;
else if (s<Smin) Smin=s;
}
}
}
cout<<"Smin="<<Smin;
getch();
return 0;
}
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{ clrscr();
int X[10],Y[10],i,j,k;
float s,Smin,a,b,c,p;
for (i=0;i<=9;i++)
{
X[i]=random(100);
Y[i]=random(100);
}
for (i=0;i<=9;i++)
{
a=sqrt((X[i+1]-X[i])*(X[i+1]-X[i])+(Y[i+1]-Y[i])*(Y[i+1]-Y[i]);
for (j=1;j<=9;j++)
{
b=sqrt((X[j+1]-X[j])*(X[j+1]-X[j])+(Y[j+1]-Y[j])*(Y[j+1]-Y[j]);
for (k=2;k<=9;k++)
{
c=sqrt((X[k+1]-X[k])*(X[k+1]-X[k])+(Y[k+1]-Y[k])*(Y[k+1]-Y[k]);
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
if (i==0) Smin=s;
else if (s<Smin) Smin=s;
}
}
}
cout<<"Smin="<<Smin;
getch();
return 0;
}
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
#include <values.h>
#define SQR(x) (x)*(x)
int main(void) {
clrscr();
int X[10],Y[10],i,j,k, min_1, min_2, min_3;
float Smin = MAXINT,a,b,c,p;
for (i=0;i<=9;i++) {
X[i]=random(100);
Y[i]=random(100);
cout << "(" << X[i] << ";" << Y[i] << ") ";
}
for (i=0;i<=9;i++) {
for (j=1;j<=9;j++) {
b=sqrt(SQR(X[j] - X[i]) + SQR(Y[j] - Y[i]));
for (k=2;k<=9;k++) {
c=sqrt(SQR(X[k] - X[j]) + SQR(Y[k] - Y[j]));
a=sqrt(SQR(X[k] - X[i]) + SQR(Y[k] - Y[i]));
if(a+b==c || a+c==b || b+c==a) continue;
p = (a+b+c)/2;
float s = sqrt(p*(p-a)*(p-b)*(p-c));
if(s < Smin) {
Smin = s;
min_1 = i, min_2 = j, min_3 = k;
}
}
}
}
cout << endl << "Smin = " << Smin << endl;
cout << "pnt 1: " << min_1 << " " << endl
<< "pnt 2: " << min_2 << " " << endl
<< "pnt 3: " << min_3 << endl;
getch();
return 0;
}