点在哪
来源:互联网 发布:java中console 编辑:程序博客网 时间:2024/04/25 12:34
点在哪
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte
描述
给出一组图形(矩形或园)和一组点的数据,判断点的位置
输入
输入一组图形的数据,其中每行以“c”开头的表示园,以“r”开头的表示矩形,其中矩形是依次给出左下角和右上角的坐标,园是给出圆心坐标及半径,图形数据以输入另起一行的*结束,接下来是给出点的坐标(x,y),整个输入文件以9999.9 9999.9结束,每行中的各个数据间用一个空格分隔
输出
输出点的位置如下信息:直接输出到屏幕上,如某点在图形上,则输出所有图形上的信息:Point i is contained in figure j;如某点不在任一图形内输出Point i is not contained in any figure。
样例输入
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
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
样例输出
Point 1 is contained in figure 1
Point 2 is contained in figure 1
Point 2 is contained in figure 3
Point 2 is contained in figure 1
Point 2 is contained in figure 3
题目要求是判断所给的点是否在矩形或者圆内。判断点是否在矩形内,假设给出的矩形左下角的坐标和右上角的坐标分别为
(X1,Y1),(X2,Y2),只要判断所给点的横坐标 X 满足:X1 <= X <= X2 ,并且纵坐标满足:Y1 <= Y <= Y2,则可证明点在矩形内。判断点是否在圆内,假设所给圆心坐标为(X1,Y1),则只需判断点到圆心的距离小于半径,
即(X-X1)^2 + (Y-Y1)^2 <= R^2,则可证明点在圆内。
#include <stdio.h>#include <string.h>#include <math.h>#include <iostream>using namespace std;struct memory{ char z; double a; double b; double c; double d; double x; double y; double r;}mem[1000];int main (){ double n[1000], m[1000]; int i = 1; while(scanf("%c",&mem[i].z) && mem[i].z != '*') ///输入所有的图形坐标 { if(mem[i].z == 'r') { scanf("%lf %lf %lf %lf",&mem[i].a, &mem[i].b, &mem[i].c, &mem[i].d); i++; } if(mem[i].z == 'c') { scanf("%lf %lf %lf %lf",&mem[i].x,&mem[i].y,&mem[i].r); i++; } } int j = 1; while(scanf("%lf %lf",&n[j],&m[j]) && n[j] != 9999.9 && m[j] != 9999.9) ///输入所给的点的坐标 { j++; } for(int l = 1; l <= j - 1; l++) ///对每一个点进行判断是否存在属于所给图形的点 { int h = 0; for(int k = 1; k <= i - 1; k++) ///对每一个图形进行判断 { if(mem[k].z == 'r') ///矩形判断 { if((n[l] >= mem[k].a && n[l] <= mem[k].c) && (m[l] >= mem[k].b && m[l] <= mem[k].d)) { h++; printf("Point %d is contained in figure %d\n",l,k); } } if(mem[k].z == 'c') ///圆形判断 { double o; o = sqrt((mem[k].x - n[l]) * (mem[k].x - n[l]) + (mem[k].y - m[l]) * (mem[k].y - m[l])); if(o <= mem[k].r) { h++; printf("Point %d is contained in figure %d\n",l,k); } } } if(h == 0) printf("Point %d is not contained in any figure\n",l); } return 0;}
0 0
- 点在哪
- 点在哪问题
- 点在哪
- 电子商务公司赢利点在哪?
- 点在哪里
- 启点在何处?
- 在房管局驻点
- 点在折线上
- 搜索引擎竞争点到底在哪?(转载iresearch-史岩)
- poj2298-Toy Storage-判断点在直线的哪侧
- 判断点在多边形中
- 最近在找点资料
- 站在起跳点上
- 里程,总是在远点
- 判断点在多边形内
- 判断点在多边形内部
- 点是否在多边形内
- 点在直线那一端
- MPI Maelstrom
- 马士兵struts2视频教程第三十一集
- 在Ubuntu下编译FFMPEG
- Lucene学习总结之二:Lucene的总体架构
- 九、关卡数据
- 点在哪
- Apache Lucene 简介
- Callable和CompletionService的使用,多任务返回值。
- 【二分匹配】HDU1068-Girls and Boys
- 【140115】网络五子棋,VC++游戏源码
- POJ 2349————最小生成树
- 稀疏矩阵的十字链表存储
- JDK 1.7 Integer.parseInt 源码解析
- C++ 引用作为参数传递