输入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边的,怎么让用户自定义是几条边的啊,知道的告诉我下,给我点提示也行
展开
 我来答
Mis_丫
2012-12-18 · TA获得超过373个赞
知道小有建树答主
回答量:272
采纳率:100%
帮助的人:227万
展开全部
代码有问题,你想要输入n来确定几边行,然后定义全局变量int N=n;然后又想int temp[N]
想多了
要么const int N = 4; 然后int temp[N];

要么输入n然后动态分配

逻辑方面我没检查
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式