[解题报告]476 - Points in Figures: Rectangles

 Points in Figures: Rectangles 

Given a list of rectangles and a list of points in the x-y plane, determine for each point which figures (if any) contain the point.

 

Input

There will be ntex2html_wrap_inline220 ) rectangles descriptions, one per line. The first character will designate the type of figure (``r'' for rectangle). This character will be followed by four real values designating the x-ycoordinates of the upper left and lower right corners.

The end of the list will be signalled by a line containing an asterisk in column one.

 

The remaining lines will contain the x-y coordinates, one per line, of the points to be tested. The end of this list will be indicated by a point with coordinates 9999.9 9999.9; these values should not be included in the output.

Points coinciding with a figure border are not considered inside.

 

Output

For each point to be tested, write a message of the form:

Point i is contained in figure j

for each figure that contains that point. If the point is not contained in any figure, write a message of the form:

Point i is not contained in any figure

Points and figures should be numbered in the order in which they appear in the input.

 

Sample Input

 

r 8.5 17.0 25.5 -8.5
r 0.0 10.3 5.5 0.0
r 2.5 12.5 12.5 2.5
*
2.0 2.0
4.7 5.3
6.9 11.2
20.0 20.0
17.6 3.2
-5.2 -7.8
9999.9 9999.9

 

Sample Output

 

Point 1 is contained in figure 2
Point 2 is contained in figure 2
Point 2 is contained in figure 3
Point 3 is contained in figure 3
Point 4 is not contained in any figure
Point 5 is contained in figure 1
Point 6 is not contained in any figure

 

Diagrama of sample input figures and data points

 

 

 

顺着题目要求做也没什么难的。。。。

 

#include<stdio.h>
int main()
{
    double x_left[10], x_right[10], y_low[10], y_high[10];
    int i,rec=0,judge=0,counter=0;
    double a,b;
    char buf[100];
    char c;
    while(scanf("%c", &c)==1)
    {
        if(c=='*') break;
        if(c=='r')
        {
            scanf("%lf%lf%lf%lf", &x_left[rec], &y_high[rec], &x_right[rec], &y_low[rec]);
            rec++;
        }
    }
    while(scanf("%lf%lf",&a,&b)==2)
    {
        counter++;
        if(a==9999.9&&b==9999.9) break;
        judge=0;
        for(i=0;i<rec;i++)
        {
            if(x_left[i]<a && x_right[i]>a && y_low[i]<b && y_high[i]>b){
               printf("Point %d is contained in figure %d\n", counter, i+1);
               judge=1;
            }
        }
        if(judge==0)
            printf("Point %d is not contained in any figure\n", counter);
    }
    return 0;
}

 

posted @ 2013-02-25 15:42  三人木君  阅读(522)  评论(0编辑  收藏  举报