• 实验9:Problem E: 点在圆内吗?


    有个坑是:

    1. The Point (0, 0) is created!
    2. A Point (0, 0) is copied!
    3.  A Point (0, 0) is erased!

     

    Home Web Board ProblemSet Standing Status Statistics
     
    Problem E: 点在圆内吗?

    Problem E: 点在圆内吗?

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 553  Solved: 277
    [Submit][Status][Web Board]

    Description

    定义一个Point类和Circle类,用于判断给定的一系列的点是否在给定的圆内。

    其中,Point类:

    1.有2个成员x和y,分别为其横坐标和纵坐标;1个静态成员numOfPoints,用于计算生成的点的个数。

    2.具有构造函数、析构函数和拷贝构造函数,具体格式输出根据样例自行判断。

    3. 具有静态方法int getNumOfPoints(),用于返回numOfPoints的值。

    4. 具有int getX()和int getY()方法,用于获取横坐标和纵坐标。

    Circle类:

    1. 拥有Point类的对象center,表示圆心坐标。拥有radius对象,表示圆的半径;1个静态成员numOfCircles,用于指示生成了多少个圆对象。

    2. 具有构造函数、析构函数和拷贝构造函数,具体格式根据样例自行判断。

    3.具有静态方法int getNumOfCircles(),返回numOfCircles的值。

    4. 具有getCenter()方法,返回圆心坐标。注意:根据输出结果判断返回值类型。

    5. 具有bool pointInCircle(Point &)方法,用于判断给定的点是否在当前圆内。是则返回true,否则返回false。

    Input

    输入分多行。

    第一行M>0,表示有M个测试用例。

    每个测试用例又包括多行。第1行包含3个整数,分别为一个圆的横坐标、纵坐标和半径。第2行N>0,表示之后又N个点,每个点占一行,分别为其横坐标和纵坐标。

    所有输入均为整数,且在int类型范围内。

    Output

    输出见样例。注意:在圆的边上的点,不在圆内。

    Sample Input

    2 0 0 10 3 2 2 11 11 10 0 1 1 20 3 2 2 1 1 100 100

    Sample Output

    The Point (0, 0) is created! Now, we have 1 points. The Point (1, 1) is created! Now, we have 2 points. A circle at (1, 1) and radius 1 is created! Now, we have 1 circles. We have 2 points and 1 circles now. The Point (0, 0) is created! Now, we have 3 points. A Point (0, 0) is copied! Now, we have 4 points. A Point (0, 0) is copied! Now, we have 5 points. A circle at (0, 0) and radius 10 is created! Now, we have 2 circles. A Point (0, 0) is erased! Now, we have 4 points. The Point (2, 2) is created! Now, we have 5 points. (2, 2) is in the circle at (0, 0). The Point (11, 11) is created! Now, we have 6 points. (11, 11) is not in the circle at (0, 0). The Point (10, 0) is created! Now, we have 7 points. (10, 0) is not in the circle at (0, 0). A Point (0, 0) is erased! Now, we have 6 points. A circle at (0, 0) and radius 10 is erased! Now, we have 1 circles. A Point (0, 0) is erased! Now, we have 5 points. The Point (1, 1) is created! Now, we have 6 points. A Point (1, 1) is copied! Now, we have 7 points. A Point (1, 1) is copied! Now, we have 8 points. A circle at (1, 1) and radius 20 is created! Now, we have 2 circles. A Point (1, 1) is erased! Now, we have 7 points. The Point (2, 2) is created! Now, we have 8 points. (2, 2) is in the circle at (1, 1). The Point (1, 1) is created! Now, we have 9 points. (1, 1) is in the circle at (1, 1). The Point (100, 100) is created! Now, we have 10 points. (100, 100) is not in the circle at (1, 1). A Point (1, 1) is erased! Now, we have 9 points. A circle at (1, 1) and radius 20 is erased! Now, we have 1 circles. A Point (1, 1) is erased! Now, we have 8 points. We have 8 points, and 1 circles. A circle at (1, 1) and radius 1 is erased! Now, we have 0 circles. A Point (1, 1) is erased! Now, we have 7 points. A Point (0, 0) is erased! Now, we have 6 points.

    HINT

     

    Append Code

    [Submit][Status][Web Board]
    #include<iostream>
    using namespace std;
    class Point{
    public:
        int x,y;
        static int numOfPoints;
        Point(int a=0,int b=0):x(a),y(b){numOfPoints++;cout<<"The Point ("<<x<<", "<<y<<") is created! Now, we have "<<numOfPoints<<" points."<<endl;}
        ~Point(){numOfPoints--;cout<<"A Point ("<<x<<", "<<y<<") is erased! Now, we have "<<numOfPoints<<" points."<<endl;}
        Point(const Point&p){numOfPoints++;x=p.x;y=p.y;cout<<"A Point ("<<x<<", "<<y<<") is copied! Now, we have "<<numOfPoints<<" points."<<endl;}
        static int getNumOfPoints(){return numOfPoints;}
        int getX(){return x;}
        int getY(){return y;}
    
    };
    class Circle{
    public:
        Point center;
        int radius;
        static int numOfCircles;
        Circle(int a,int b,int c):center(a,b),radius(c){numOfCircles++;cout<<"A circle at ("<<center.x<<", "<<center.y<<") and radius "<<radius<<" is created! Now, we have "<<numOfCircles<<" circles."<<endl;}
        Circle(Point p,int r):center(p),radius(r){numOfCircles++;cout<<"A circle at ("<<center.x<<", "<<center.y<<") and radius "<<radius<<" is created! Now, we have "<<numOfCircles<<" circles."<<endl;}
        ~Circle(){numOfCircles--;cout<<"A circle at ("<<center.x<<", "<<center.y<<") and radius "<<radius<<" is erased! Now, we have "<<numOfCircles<<" circles."<<endl;}
        Circle(const Circle &c){numOfCircles++;center.x=c.center.x;center.y=c.center.y;radius=c.radius;cout<<"A circle at ("<<center.x<<", "<<center.y<<") and radius "<<radius<<" is created! Now, we have "<<numOfCircles<<" circles."<<endl;}
        static int getNumOfCircles(){return numOfCircles;}
        Point &getCenter(){return center;}
        bool pointInCircle(Point &p){if((p.x-center.x)*(p.x-center.x)+(p.y-center.y)*(p.y-center.y)<radius*radius) return true;else return false;}
    };
    int Point::numOfPoints=0;
    int Circle::numOfCircles=0;
    int main()
    {
        int cases,num;
        int x, y, r, px, py;
        Point aPoint(0,0), *bPoint;
        Circle aCircle(1,1,1);
        cin>>cases;
        cout<<"We have "<<Point::getNumOfPoints()<<" points and "<<Circle::getNumOfCircles()<<" circles now."<<endl;
        for (int i = 0; i < cases; i++)
        {
            cin>>x>>y>>r;
            bPoint = new Point(x,y);
            Circle circle(*bPoint, r);
            cin>>num;
            for (int j = 0; j < num; j++)
            {
                cin>>px>>py;
                if (circle.pointInCircle(*(new Point(px, py))))
                {
                    cout<<"("<<px<<", "<<py<<") is in the circle at (";
                    cout<<circle.getCenter().getX()<<", "<<circle.getCenter().getY()<<")."<<endl;
                }
                else
                {
                    cout<<"("<<px<<", "<<py<<") is not in the circle at (";
                    cout<<circle.getCenter().getX()<<", "<<circle.getCenter().getY()<<")."<<endl;
                }
            }
            delete bPoint;
        }
        cout<<"We have "<<Point::getNumOfPoints()<<" points, and "<<Circle::getNumOfCircles()<<" circles."<<endl;
        return 0;
    }
  • 相关阅读:
    COJ979 WZJ的数据结构(负二十一)
    COJ980 WZJ的数据结构(负二十)
    奇怪的错误
    COJ883 工艺品
    COJ885 LCS???
    COJ559 回文
    hdu1505(dp求最大子矩阵)
    hdu1506(dp求最大子矩阵)
    hdu2569(递推dp)
    hdu1081(最大子矩阵)
  • 原文地址:https://www.cnblogs.com/auto1945837845/p/5447300.html
Copyright © 2020-2023  润新知