#include <stdio.h>
#include <stdlib.h>
//向量
typedef struct Vector
{
int x;
int y;
}Vector;
//坐标点
typedef struct Point
{
int x;
int y;
}Point;
//判断两向量是否共线,不共线即可构成三角形
int triangle(Vector v[])
{
if(v[0].x*v[1].y == v[1].x*v[0].y) return 0;//共线、不能构成三角形
else return 1;
}
//将三点坐标转换为两个向量的坐标
void change(Point p[],Vector v[])
{
v[0].x = p[0].x-p[1].x;
v[0].y = p[0].y-p[1].y;
v[1].x = p[0].x-p[2].x;
v[1].y = p[0].y-p[2].y;
}
int main()
{
int n;//坐标点总数
int i,j,k;//循环变量
Point m[3];//三个点
Vector l[2];//两个向量
printf("请输入坐标点个数:\n");//输入坐标点个数
scanf("%d",&n);
Point *p = (Point*)malloc(sizeof(Point)*n);//分配点存储空间
for(i=0;i<n;i++)
{
printf("请输入第%d个坐标:\n",i);
scanf("%d,%d",&p[i].x,&p[i].y);
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
for(k=j+1;k<n;k++)
{
m[0].x = p[i].x;
m[0].y = p[i].y;
m[1].x = p[j].x;
m[1].y = p[j].y;
m[2].x = p[k].x;
m[2].y = p[k].y;
change(m,l);
if(triangle(l)>0)
{
printf("构成三角形的点1:%d-%d\n",m[0].x,m[0].y);
printf("构成三角形的点2:%d-%d\n",m[1].x,m[1].y);
printf("构成三角形的点3:%d-%d\n\n",m[2].x,m[2].y);
}
}
}
}
}
//{
// printf("构成三角形的点1:%d-%d\n",m[0].x,m[0].y);
// printf("构成三角形的点2:%d-%d\n",m[1].x,m[1].y);
// printf("构成三角形的点3:%d-%d\n\n",m[2].x,m[2].y);
//} else{
// printf("不构成三角形的点1:%d-%d\n",m[0].x,m[0].y);
// printf("不构成三角形的点2:%d-%d\n",m[1].x,m[1].y);
// printf("不构成三角形的点3:%d-%d\n\n",m[2].x,m[2].y);
//}
/**
测试数据:(3,4)(2,4) (1,4) (6,5)
**/