欢迎来到天天文库
浏览记录
ID:60216041
大小:693.00 KB
页数:15页
时间:2020-12-03
《最新N皇后及凸多边形C语言设计流程思路及源代码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、__________________________________________________成绩管理程序设计报告(凸多边形)一、问题描述输入N个点的坐标,判断这N个点能否构成一个凸多边形。二、结构图多边形判断体系数据输入类型判断三角判别结果输出三、数据结构的设计intpolygon(pointsnps){doublevar1,var2;inti,j,k;if(nps.pointNum<3)return0;/*如果多边形的顶点数小于3,返回0*/for(i=0;i2、=(i+2)%nps.pointNum;k=(i+1)%nps.pointNum;var1=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);for(j=(j+1)%nps.pointNum;j!=i;j=(j+1)%nps.pointNum){var2=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);if(var1*var2<0)retur3、n0;/*有则返回0,表示不能构成凸多边形*/if(var2!=0)var1=var2;}if(var1==0)return0;}return1;/*没有则返回1,表示能构成凸多边形*/}四、处理流程图:NY输入顶点数nN>2不是凸多边形是凸多边形任意三点组成的三角形中有没有其它的点YN收集于网络,如有侵权请联系管理员删除__________________________________________________五、源程序#include#include#defineN100/*定义一个字符常量*/typedefstr4、uct{/*定义一个新的数据类型*/doublex[N];doubley[N];intpointNum;}points;intpolygon(pointsnps){doublevar1,var2;inti,j,k;if(nps.pointNum<3)return0;/*如果多边形的顶点数小于3,返回0*/for(i=0;i5、-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);for(j=(j+1)%nps.pointNum;j!=i;j=(j+1)%nps.pointNum){var2=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);if(var1*var2<0)return0;/*有则返回0,表示不能构成凸多边形*/if(var2!=0)var1=var2;}if(var1==0)return0;}return1;/*6、没有则返回1,表示能构成凸多边形*/}main(){inti;pointsnps;printf("请输入顶点的个数:");scanf("%d",&nps.pointNum);printf("请输入这些顶点的坐标,每个点的横坐标和纵坐标用逗号分隔开(例如12.5,34):");for(i=0;i7、"该多边形是凸多边形。");elseprintf("该多边形不是凸多边形!!!");}七、程序测试记录:第一次:请输入顶点的个数:第二次:请输入顶点的个数:5请输入这些顶点的坐标,每个点的横坐标和纵坐标用逗号分隔开(例如12.5,34):第1个顶点:1,1第2个顶点:1,4第3个顶点:5,1第4个顶点:5,4收集于网络,如有侵权请联系管理员删除__________________________________________________第5个顶点:3,3该多边形不是凸多边形!!!Pressanykeytocontunue第三次:请输入顶点的个数:8、3请输入这些顶点的坐标,每个点的横坐标
2、=(i+2)%nps.pointNum;k=(i+1)%nps.pointNum;var1=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);for(j=(j+1)%nps.pointNum;j!=i;j=(j+1)%nps.pointNum){var2=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);if(var1*var2<0)retur
3、n0;/*有则返回0,表示不能构成凸多边形*/if(var2!=0)var1=var2;}if(var1==0)return0;}return1;/*没有则返回1,表示能构成凸多边形*/}四、处理流程图:NY输入顶点数nN>2不是凸多边形是凸多边形任意三点组成的三角形中有没有其它的点YN收集于网络,如有侵权请联系管理员删除__________________________________________________五、源程序#include#include#defineN100/*定义一个字符常量*/typedefstr
4、uct{/*定义一个新的数据类型*/doublex[N];doubley[N];intpointNum;}points;intpolygon(pointsnps){doublevar1,var2;inti,j,k;if(nps.pointNum<3)return0;/*如果多边形的顶点数小于3,返回0*/for(i=0;i5、-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);for(j=(j+1)%nps.pointNum;j!=i;j=(j+1)%nps.pointNum){var2=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);if(var1*var2<0)return0;/*有则返回0,表示不能构成凸多边形*/if(var2!=0)var1=var2;}if(var1==0)return0;}return1;/*6、没有则返回1,表示能构成凸多边形*/}main(){inti;pointsnps;printf("请输入顶点的个数:");scanf("%d",&nps.pointNum);printf("请输入这些顶点的坐标,每个点的横坐标和纵坐标用逗号分隔开(例如12.5,34):");for(i=0;i7、"该多边形是凸多边形。");elseprintf("该多边形不是凸多边形!!!");}七、程序测试记录:第一次:请输入顶点的个数:第二次:请输入顶点的个数:5请输入这些顶点的坐标,每个点的横坐标和纵坐标用逗号分隔开(例如12.5,34):第1个顶点:1,1第2个顶点:1,4第3个顶点:5,1第4个顶点:5,4收集于网络,如有侵权请联系管理员删除__________________________________________________第5个顶点:3,3该多边形不是凸多边形!!!Pressanykeytocontunue第三次:请输入顶点的个数:8、3请输入这些顶点的坐标,每个点的横坐标
5、-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);for(j=(j+1)%nps.pointNum;j!=i;j=(j+1)%nps.pointNum){var2=(nps.x[i]-nps.x[k])*(nps.y[i]-nps.y[j])-(nps.y[i]-nps.y[k])*(nps.x[i]-nps.x[j]);if(var1*var2<0)return0;/*有则返回0,表示不能构成凸多边形*/if(var2!=0)var1=var2;}if(var1==0)return0;}return1;/*
6、没有则返回1,表示能构成凸多边形*/}main(){inti;pointsnps;printf("请输入顶点的个数:");scanf("%d",&nps.pointNum);printf("请输入这些顶点的坐标,每个点的横坐标和纵坐标用逗号分隔开(例如12.5,34):");for(i=0;i7、"该多边形是凸多边形。");elseprintf("该多边形不是凸多边形!!!");}七、程序测试记录:第一次:请输入顶点的个数:第二次:请输入顶点的个数:5请输入这些顶点的坐标,每个点的横坐标和纵坐标用逗号分隔开(例如12.5,34):第1个顶点:1,1第2个顶点:1,4第3个顶点:5,1第4个顶点:5,4收集于网络,如有侵权请联系管理员删除__________________________________________________第5个顶点:3,3该多边形不是凸多边形!!!Pressanykeytocontunue第三次:请输入顶点的个数:8、3请输入这些顶点的坐标,每个点的横坐标
7、"该多边形是凸多边形。");elseprintf("该多边形不是凸多边形!!!");}七、程序测试记录:第一次:请输入顶点的个数:第二次:请输入顶点的个数:5请输入这些顶点的坐标,每个点的横坐标和纵坐标用逗号分隔开(例如12.5,34):第1个顶点:1,1第2个顶点:1,4第3个顶点:5,1第4个顶点:5,4收集于网络,如有侵权请联系管理员删除__________________________________________________第5个顶点:3,3该多边形不是凸多边形!!!Pressanykeytocontunue第三次:请输入顶点的个数:
8、3请输入这些顶点的坐标,每个点的横坐标
此文档下载收益归作者所有