編程 :輸入n各點坐標,判斷能否構成凸多邊形
題目:
編程 :輸入n各點坐標,判斷能否構成凸多邊形
解答:
.問題描述.
輸入N個點的坐標,判斷這N個點能否構成一個凸多邊形.
2.問題分析.
根據2點確定一條直線的原理,即y-y1/x-x1=y2-y1/x2-x1;移向得x(y2-y1)+y(x1-x2)-x1y2+x2y1,設t= x(y2-y1)+y(x1-x2)-x1y2+x2y1,假如可組成凸多邊形,且假設兩點是圖多邊形一邊,則把其他N-2點帶入,得到的 t必均爲正或均爲負.由此可判斷任意2點是否爲凸多邊形的一條邊.
由任意點開始尋找能夠與其組成邊的點,若按順序能夠找到N點則其爲凸多邊形,
反之則不能.
3.設計思路.
輸入N個點,用二維數組存儲這N個點,定義real函數判斷N個點是否能構成凸多邊形,從第一個點開始能夠找到N條滿足函數tt的邊則爲圖多邊形.tt爲判斷2點能否夠成圖多邊形邊的函數.
4.流程圖.
5.源程序.
#include
#define N 4
int tt(int p[][2],int a,int b)
{
int temp[N],k=0;
int t;
int i;
int j;
for(i=0;i0)
temp[k++]=1;
else
temp[k++]=-1;
}
for(j=1;j
添加新評論