输入N个点的坐标,判断这N个点能否构成一个凸多边形,程序有了一点,怎么在开头加上输入多边形的边数啊
#include<stdio.h>intN=n;inttt(intp[][2],inta,intb){inttemp[N],k=0;intt;inti;intj;for(...
#include<stdio.h>
int N=n;
int tt(int p[][2],int a,int b)
{ int temp[N],k=0;
int t;
int i;
int j;
for(i=0;i<N;i++)
{ if(i==a||i==b)
{ continue; }
t=p[i][0]*(p[b][1]-p[a][1])+(p[a][0]-p[b][0])*p[i][1]-p[a][0]*p[b][1]+p[b][0]*p[a][1];
if(t==0)
return 0;
else if(t>0)
temp[k++]=1;
else temp[k++]=-1; }
for(j=1;j<k;j++)
{ if(temp[0]!=temp[j]) return 0; }
return 1; } int real(int p[][2])
{ int flag[N],m=0;
int i,j;
for(i=0;i<N;i++)
{ flag[i]=0; }
for( i=0;i<N;i++)
{ for(j=1;j<N;j++)
{ if(flag[j]) continue;
if(tt(p,m,j))
{ flag[m]=1; m=j; break; } } }
flag[m]=1; for(i=0;i<N;i++)
{ if(flag[i]==0) return 0; }
if(tt(p,0,m)) return 1; return 0; }
void main()
{ int n
printf("输入边数:")
scanf("%d",&n)
int p[N][2];
int i;printf("请输入这N个点坐标:\n");
for(i=0;i<N;i++)
{ printf("第%d个点坐标(x,y):",i+1);
scanf("%d,%d",&p[i][0],&p[i][1]);
printf("%d,%d\n",p[i][0],p[i][1]); }
if (real(p)) printf("能构成一个凸多边形");
else printf("不能构成一个凸多边形");
}
在上面代码中,定义了多边形是4边的,怎么让用户自定义是几条边的啊,知道的告诉我下,给我点提示也行 展开
int N=n;
int tt(int p[][2],int a,int b)
{ int temp[N],k=0;
int t;
int i;
int j;
for(i=0;i<N;i++)
{ if(i==a||i==b)
{ continue; }
t=p[i][0]*(p[b][1]-p[a][1])+(p[a][0]-p[b][0])*p[i][1]-p[a][0]*p[b][1]+p[b][0]*p[a][1];
if(t==0)
return 0;
else if(t>0)
temp[k++]=1;
else temp[k++]=-1; }
for(j=1;j<k;j++)
{ if(temp[0]!=temp[j]) return 0; }
return 1; } int real(int p[][2])
{ int flag[N],m=0;
int i,j;
for(i=0;i<N;i++)
{ flag[i]=0; }
for( i=0;i<N;i++)
{ for(j=1;j<N;j++)
{ if(flag[j]) continue;
if(tt(p,m,j))
{ flag[m]=1; m=j; break; } } }
flag[m]=1; for(i=0;i<N;i++)
{ if(flag[i]==0) return 0; }
if(tt(p,0,m)) return 1; return 0; }
void main()
{ int n
printf("输入边数:")
scanf("%d",&n)
int p[N][2];
int i;printf("请输入这N个点坐标:\n");
for(i=0;i<N;i++)
{ printf("第%d个点坐标(x,y):",i+1);
scanf("%d,%d",&p[i][0],&p[i][1]);
printf("%d,%d\n",p[i][0],p[i][1]); }
if (real(p)) printf("能构成一个凸多边形");
else printf("不能构成一个凸多边形");
}
在上面代码中,定义了多边形是4边的,怎么让用户自定义是几条边的啊,知道的告诉我下,给我点提示也行 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询