点在多边形问题程序报告.doc

上传人:b****2 文档编号:1704353 上传时间:2022-10-23 格式:DOC 页数:4 大小:100.50KB
下载 相关 举报
点在多边形问题程序报告.doc_第1页
第1页 / 共4页
点在多边形问题程序报告.doc_第2页
第2页 / 共4页
点在多边形问题程序报告.doc_第3页
第3页 / 共4页
点在多边形问题程序报告.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

点在多边形问题程序报告.doc

《点在多边形问题程序报告.doc》由会员分享,可在线阅读,更多相关《点在多边形问题程序报告.doc(4页珍藏版)》请在冰豆网上搜索。

点在多边形问题程序报告.doc

点在多边形问题程序报告

--------护城小兵

.问题描述

给定n个点的坐标,这n个点依次围成一闭合多边形,再给一点(x,y),判断它是否再多边形中。

2.课题分析

点在多边形内

要解决的问题

相交次数相交的角度相加的和

3.数据结构的设计

inttt(doublep[][2],inta,intb):

一点坐标

if(t==0)return0:

定义0

if(t>0)temp[k++]=1:

定义1

temp[k++]=-1:

定义-1

4.处理结构的设计

输入点P(X,Y)

以P为起点作任意射线L

算L与线段AB,BC,CD,……,KA相交的次数

线段关于P是逆时针的算+1,顺时针的算-1,不相交的算0

加起來不等于0的就是在多边形內

5.源程序

#include

constintN=4;

inttt(doublep[][2],inta,intb)

{

inttemp[N],k=0;doublet;

for(inti=0;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)return0;

elseif(t>0)temp[k++]=1;

elsetemp[k++]=-1;}

for(intj=1;j

{if(temp[0]!

=temp[j])return0;}

return1;}

intreal(doublep[][2])

{intflag[N],m=0;for(inti=0;i

for(i=0;i

{for(intj=1;j

{if(flag[j])continue;if(tt(p,m,j))

{flag[m]=1;m=j;break;}}}

flag[m]=1;

for(i=0;i

{if(flag[i]==0)return0;}

if(tt(p,0,m))return1;return0;}

voidmain()

{doublep[N][2];

charch='y';

while(ch=='y'||ch=='Y')

{cout<<"请输入点的坐标:

"<

for(inti=0;i

{cout<<"下一个点坐标:

";cin>>p[i][0]>>p[i][1];cout<

if(real(p))cout<<"能构成";elsecout<<"不能构成";cout<

(继续请输入y&Y)";cin>>ch;}}

6.调试记录

八,课程设计总结:

在调试程序的过程中,我明白程序不是写出来的,而是调出来的,这次的设计课是人生一次真正的自己动手的程序设计!

自己发现问题、解决问题,其中不仅对C和C++的操作有了进一步的掌握,还了解到了程序设计的书写风格及其注释的格式。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1