Problem D: 从点到面

Description

一个矩形可以由左上角和右下角的顶点而唯一确定。现在请定义两个类:Point和Rectangle。

其中Point类有x和y两个属性(均为int类型),表示二维空间内一个点的横纵坐标,并具有相应的构造函数、析构函数和拷贝构造函数。此外,还有getX()和getY()方法用以得到一个点的坐标值。

Rectangle类有leftTop和rightBottom两个属性(均为Point类的对象),表示一个矩形的左上角和右下角的两个点,并具有相应的构造函数、析构函数。此外,还有getLeftTop()、getRightBottom()方法用于获取相应的左上角点、右下角点,getArea()方法用以获取面积。

Input

输入有多行。

第一行是一个正整数M,表示后面有M个测试用例。

每个测试用例占一行,包括4个正整数,分别为左上角的横坐标、纵坐标,右下角的横坐标、纵坐标。

注意:

1.请根据输出样例判断两个类中相应方法的书写方法。

2. 假定屏幕的左下角为坐标原点。

Output

输出见样例。

Sample Input

1

10 10 20 0

Sample Output

A point (10, 10) is created!

A point (20, 0) is created!

A rectangle (10, 10) to (20, 0) is created!

Area: 100

Left top is (10, 10)

A point (20, 0) is copied!

A point (20, 0) is copied!

Right bottom is (20, 0)

A point (20, 0) is erased!

A point (20, 0) is erased!

A rectangle (10, 10) to (20, 0) is erased!

A point (20, 0) is erased!

A point (10, 10) is erased!

HINT

Append Code

#include<iostream>

using namespace std;

class Point

{

private:

    int x,y;

public:

    Point(int a,int b){x=a,y=b;cout<<"A point ("<<x<<", "<<y<<") is created!\n";}

    ~Point(){cout<<"A point ("<<x<<", "<<y<<") is erased!\n";}

    Point(const Point &p){x=p.x,y=p.y;cout<<"A point ("<<x<<", "<<y<<") is copied!\n";}

    int getX(){return x;}

    int getY(){return y;}

};

class Rectangle

{

private:

    Point leftTop,rightBottom;//leftTop.x(a),leftTop.y(b),rightBottom.x(c),rightBottom.y(d)

public:

    Rectangle(int a,int b,int c,int d):leftTop(a,b),rightBottom(c,d){cout<<"A rectangle ("<<leftTop.getX()<<", "<<leftTop.getY()<<") to ("<<rightBottom.getX()<<", "<<rightBottom.getY()<<") is created!\n";}//

    //Rectangle(Point a,Point b):leftTop(a),rightBottom(b){cout<<"A rectangle ("<<leftTop.getX()<<", "<<leftTop.getY()<<") to ("<<rightBottom.getX()<<", "<<rightBottom.getY()<<") is created!\n";}

    ~Rectangle(){cout<<"A rectangle ("<<leftTop.getX()<<", "<<leftTop.getY()<<") to ("<<rightBottom.getX()<<", "<<rightBottom.getY()<<") is erased!\n";}

    Point &getLeftTop(){return leftTop;}

    Point getRightBottome(){return rightBottom;}

    int getArea(){return (rightBottom.getX()-leftTop.getX())*(leftTop.getY()-rightBottom.getY());}

};

int main()

{

    int cases;

    int x1, y1, x2, y2;

    cin>>cases;

    for (int i = 0; i < cases; i++)

    {

        cin>>x1>>y1>>x2>>y2;

        Rectangle rect(x1,y1,x2,y2);

        cout<<"Area: "<<rect.getArea()<<endl;

        cout<<"Left top is ("<<rect.getLeftTop().getX()<<", "<<rect.getLeftTop().getY()<<")"<<endl;

        cout<<"Right bottom is ("<<rect.getRightBottome().getX()<<", "<<rect.getRightBottome().getY()<<")"<<endl;

    }

    return 0;

}

时间: 2024-12-28 09:50:23

Problem D: 从点到面的相关文章

Problem C: 从点到面

Problem C: 从点到面 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 3317  Solved: 1854[Submit][Status][Web Board] Description 一个矩形可以由左上角和右下角的顶点而唯一确定.现在请定义两个类:Point和Rectangle. 其中Point类有x和y两个属性(均为int类型),表示二维空间内一个点的横纵坐标,并具有相应的构造函数.析构函数和拷贝构造函数.此外,还有getX()和get

hdu 3549 Flow Problem

Flow Problem 题意:N个顶点M条边,(2 <= N <= 15, 0 <= M <= 1000)问从1到N的最大流量为多少? 分析:直接使用Edmonds_Karp算法即可:下面是对增广路的一些理解和代码的解释: 残量:容量-流量: 增广:求出从源点到汇点的一条道路中所有残量的最小值d,把对应的所有边上的流量增加d,反向边(t->s)流量减少d(反向边的cap其实一直是0,只是flow为负了); 技巧:这次的ins的标号是从0开始的,即tot++,之前我都是++t

csuoj 1503: 点到圆弧的距离

http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1503 1503: 点到圆弧的距离 时间限制: 1 Sec  内存限制: 128 MB  Special Judge 提交: 247  解决: 59 [提交][状态][讨论版] 题目描述 输入一个点P和一条圆弧(圆周的一部分),你的任务是计算P到圆弧的最短距离.换句话说,你需要在圆弧上找一个点,到P点的距离最小. 提示:请尽量使用精确算法.相比之下,近似算法更难通过本题的数据. 输入 输入包含最多

poj 1511 Dijkstra的另一种用法---求其他点到源点的最短路

传送门:http://poj.org/problem?id=1511 题目其实到现在我都没读懂,到底是哪里看出来的,ans是源点到各个点最短路的和外加各个点到源点的最短路的和,不过重要的是学到dijkstra的另一种用法--求各个点到源点的距离,原理不难理解,就是把dijkstra求单源最短路径的过程逆过来: 1.取源点加入S集合,设其余点在T集合 2.找到达源点的最小边,将该边连的点加入S,更新T到S的各个点的最短路径,取最短的边,继续2的过程 而dijastra求单源最短路径的过程 1.取源

URAL 1348 Goat in the Garden 2(点到线段的距离)

[题目链接]:click here~~ [题目大意]:求某点到一条线段的最小距离与最大距离. [思路]: 分析可知,最大距离一定在端点处取得.那么接下来求最小距离时,先求出垂线与线段所在直线的交点,然后判断交点在不在线段上.如果在,则最小距离为垂线段的距离,即交点到此点的距离.如果不在,则最小距离必在另一端点取得.问题转换如何判断点与线段的垂足是否在线段上,可以利用叉积方便的求出. 代码: /* * Problem: NO:URAL 1348 * Running time: 1MS * Comp

CSU 1503: 点到圆弧的距离(计算几何)

题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1503 Description 输入一个点P和一条圆弧(圆周的一部分),你的任务是计算P到圆弧的最短距离.换句话说,你需要在圆弧上找一个点,到P点的距离最小. 提示:请尽量使用精确算法.相比之下,近似算法更难通过本题的数据. Input 输入包含最多10000组数据.每组数据包含8个整数x1, y1, x2, y2, x3, y3, xp, yp.圆弧的起点是A(x1,y1),经过点B(

[2015hdu多校联赛补题]hdu5296 Annoying problem

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5296 题意:给你一棵n个结点的边权树和一个树上点的集合,开始时集合为空 然后进行两种操作: 1.如果结点u不在集合中,那么将u加入集合 2.如果结点u在集合中,那么删除u 每次操作后输出包含点集合的最小联通子图的边权和 题解: 其实问题的本质就是求结点u与子图的距离(如果在子图内部距离为0),yy一下可以想到,若x.y为集合中与u最近的两点,那么dis(u,子图)=dis(u,联通u.x.y三点的汇

点到圆弧的距离(csu1503)+几何

1503: 点到圆弧的距离 Time Limit: 1 Sec  Memory Limit: 128 MB  Special JudgeSubmit: 325  Solved: 70[Submit][Status][Web Board] Description 输入一个点P和一条圆弧(圆周的一部分),你的任务是计算P到圆弧的最短距离.换句话说,你需要在圆弧上找一个点,到P点的距离最小.提示:请尽量使用精确算法.相比之下,近似算法更难通过本题的数据. Input 输入包含最多10000组数据.每组

loj6157 A^B Problem (并查集)

题目: https://loj.ac/problem/6157 分析: 这种树上异或,一般是采用分位考虑,但是这题即使分位,也会发现非常不好处理 这里考虑维护一个点到其根的路径的异或值 用并查集去检测m个测试 若s和t不在一个并查集内: 挑出s的根f1,t的根f2,father[f1]=f2,并且发现w[f1]=c^w[s]^w[t] 若s和t在一个并查集内: 那么首先这个并查集内的所有点的w值都已经求过了,那么只要check一下c是否等于w[s]^w[t]即可 如果最后并查集数量多于一个,那么