首页 > 代码库 > 点在哪
点在哪
http://acm.sdibt.edu.cn/JudgeOnline/problem.php?id=1404
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 17 Solved: 3
[Submit][STATUS][DISCUSS]
Description
给出一组图形(矩形或圆)和一组点的数据,判断点的位置。
Input
输 入一组图形的数据,其中每行以“c”开头的表示圆,以“r”开头的表示矩形,其中矩形是依次给出左下角和右上角的坐标,圆是给出圆心坐标及半径,图形数据 以输入另起一行的 *结束,接下来是给出点的坐标(x,y),整个输入文件以9999.9 9999.9结束,每行中的各个数据间用一个空格分隔。
Output
输出点的位置如下信息:直接输出到屏幕上,如某点在图形上,则输出所有图形上的信息:point i is contained in figure j;如某点不在任一图形内,则输入:point i is not contained in any figure。
Sample Input
r 0.0 0.0 5.5 10.3 c -5.0 -5.0 3.7 r 2.5 2.5 12.5 12.5 * 2.0 2.0 4.7 5.3 9999.9 9999.9
Sample Output
point 1 is contained in figure 1 point 2 is contained in figure 1 point 2 is contained in figure 3
解题思路:
1.开辟两个大小为1000的cir和rec数组,记录输入的圆和矩形
2.每输入一个点进行判断输出
核心代码:
if
(rec[i].num!=0&&cir[i].num==0)
if
(p.x>=rec[i].xl&&p.x<=rec[i].xr&&p.y>=rec[i].yl&&p.y<=rec[i].yr)//判断是否在矩形中
{
cout<<
"point "
<<cntp<<
" is contained in figure "
<<rec[i].num<<endl;
flag=
true
;
}
if
(rec[i].num==0&&cir[i].num!=0)
if
(((p.x-cir[i].x)*(p.x-cir[i].x)+(p.y-cir[i].y)*(p.y-cir[i].y))<=(cir[i].r*cir[i].r))//判断是否在圆中
{
cout<<
"point "
<<cntp<<
" is contained in figure "
<<cir[i].num<<endl;
flag=
true
;
}
点在哪
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。