OJ Problem C: 平面上的点和线——Point类、Line类 (III)

Description

在数学上,平面直角坐标系上的点用X轴和Y轴上的两个坐标值唯一确定,两点确定一条线段。现在我们封装一个“Point类”和“Line类”来实现平面上的点的操作。
根据“append.cc”,完成Point类和Line类的构造方法和show()方法,输出各Line对象和Point对象的构造和析构次序。

接口描述:

Point::show()方法:按格式输出Point对象。
Line::show()方法:按格式输出Line对象。

Input

输入的第一行为N,表示后面有N行测试样例。每行为两组坐标“x,y”,分别表示线段起点和终点的x坐标和y坐标,两组坐标间用一个空格分开,x和y的值都在double数据范围内。

Output

输出为多行,每行为一条线段,起点坐标在前终点坐标在后,每个点的X坐标在前,Y坐标在后,Y坐标前面多输出一个空格,用括号包裹起来。输出格式见sample。
C语言的输入输出被禁用。

Sample Input

4
0,0 1,1
1,1 2,3
2,3 4,5
0,1 1,0

Sample Output

Point : (1, -2) is created.
Point : (2, -1) is created.
Point : (0, 0) is created.
Point : (0, 0)
=========================
Point : (0, 0) is created.
Point : (1, 1) is created.
Line : (0, 0) to (1, 1) is created.
Line : (0, 0) to (1, 1)
Line : (0, 0) to (1, 1) is erased.
Point : (1, 1) is erased.
Point : (0, 0) is erased.
=========================
Point : (1, 1) is created.
Point : (2, 3) is created.
Line : (1, 1) to (2, 3) is created.
Line : (1, 1) to (2, 3)
Line : (1, 1) to (2, 3) is erased.
Point : (2, 3) is erased.
Point : (1, 1) is erased.
=========================
Point : (2, 3) is created.
Point : (4, 5) is created.
Line : (2, 3) to (4, 5) is created.
Line : (2, 3) to (4, 5)
Line : (2, 3) to (4, 5) is erased.
Point : (4, 5) is erased.
Point : (2, 3) is erased.
=========================
Point : (0, 1) is created.
Point : (1, 0) is created.
Line : (0, 1) to (1, 0) is created.
Line : (0, 1) to (1, 0)
Line : (0, 1) to (1, 0) is erased.
Point : (1, 0) is erased.
Point : (0, 1) is erased.
=========================
Point : (1, -2) is copied.
Point : (2, -1) is copied.
Line : (1, -2) to (2, -1) is created.
Point : (1, -2) is copied.
Point : (0, 0) is copied.
Line : (1, -2) to (0, 0) is created.
Point : (2, -1) is copied.
Point : (0, 0) is copied.
Line : (2, -1) to (0, 0) is created.
Point : (0, 0) is copied.
Point : (2, -1) is copied.
Line : (0, 0) to (2, -1) is created.
Line : (1, -2) to (2, -1)
Line : (1, -2) to (0, 0)
Line : (2, -1) to (0, 0)
Line : (0, 0) to (2, -1)
Line : (0, 0) to (2, -1) is erased.
Point : (2, -1) is erased.
Point : (0, 0) is erased.
Line : (2, -1) to (0, 0) is erased.
Point : (0, 0) is erased.
Point : (2, -1) is erased.
Line : (1, -2) to (0, 0) is erased.
Point : (0, 0) is erased.
Point : (1, -2) is erased.
Line : (1, -2) to (2, -1) is erased.
Point : (2, -1) is erased.
Point : (1, -2) is erased.
Point : (0, 0) is erased.
Point : (2, -1) is erased.
Point : (1, -2) is erased.

Aceppted Code

#include <iostream>
using namespace std;

class Point {
    friend class Line;
private:
    double x,y;
public:
    Point():x(0),y(0) {cout << "Point : (" << x << ", " << y << ") is created.\n";}
    Point(double x1, double y1) : x(x1), y(y1) {cout << "Point : (" << x << ", " << y << ") is created.\n";}
    void show() {cout << "Point : (" << x << ", " << y << ")\n";}
    Point(const Point &p) :x(p.x), y(p.y) {cout << "Point : (" << x << ", " << y << ") is copied.\n";}
    ~Point(){cout << "Point : (" << x << ", " << y << ") is erased.\n";}
};
class Line {
    friend class Point;
private:
    Point p, q;
public:
    Line(Point &p1, Point &q1):p(p1), q(q1) {
        cout << "Line : (" << p.x << ", " << p.y << ") to (" << q.x << ", " << q.y << ") is created.\n";
    }
    ~Line(){
        cout << "Line : (" << p.x << ", " << p.y << ") to (" << q.x << ", " << q.y << ") is erased.\n";
    }
    Line(double x1, double y1, double x2, double y2): p(x1, y1), q(x2, y2){
        cout << "Line : (" << p.x << ", " << p.y << ") to (" << q.x << ", " << q.y << ") is created.\n";
    }
    void show() {cout << "Line : (" << p.x << ", " << p.y << ") to (" << q.x << ", " << q.y << ")\n";}
};
int main()
{
    char c;
    int num, i;
    double x1, x2, y1, y2;
    Point p(1, -2), q(2, -1), t;
    t.show();
    std::cin>>num;
    for(i = 1; i <= num; i++)
    {
        std::cout<<"=========================\n";
        std::cin>>x1>>c>>y1>>x2>>c>>y2;
        Line line(x1, y1, x2, y2);
        line.show();
    }
    std::cout<<"=========================\n";
    Line l1(p, q), l2(p, t), l3(q, t), l4(t, q);
    l1.show();
    l2.show();
    l3.show();
    l4.show();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Problem_C_Data.zip The three data sets provided contain product user ratings and reviews extracted from the Amazon Customer Reviews Dataset thru Amazon Simple Storage Service (Amazon S3). hair_dryer.tsv microwave.tsv pacifier.tsv Data Set Definitions: Each row represents data partitioned into the following columns. Problem_C_Data.zip提供的三个数据集包含产品用户评分和通过Amazon Simple Storage Service(Amazon S3)从Amazon客户评论数据集提取的评论。 hair_dryer.tsv微波.tsv pacifier.tsv数据集定义:每行代表划分为以下各列的数据。 ● marketplace (string): 2 letter country code of the marketplace where the review was written. ●市场(字符串):撰写评论的市场的2个字母的国家代码。 ● customer_id (string): Random identifier that can be used to aggregate reviews written by a single author. ●customer_id(字符串):随机标识符,可用于汇总单个作者撰写的评论。 ● review_id (string): The unique ID of the review. ●review_id(字符串):评论的唯一ID。 ● product_id (string): The unique Product ID the review pertains to. ●product_id(字符串):审核所属的唯一产品ID。 ● product_parent (string): Random identifier that can be used to aggregate reviews for the same product. ●product_parent(字符串):随机标识符,可用于汇总同一产品的评论。 ● product_title (string): Title of the product. ●product_title(字符串):产品的标题。 ● product_category (string): The major consumer category for the product. ●product_category(字符串):产品的主要消费者别。 ● star_rating (int): The 1-5 star rating of the review. ●star_rating(int):评论的1-5星评级。 ● helpful_votes (int): Number of helpful votes. ●helpful_votes(int):有用的投票数。 ● total_votes (int): Number of total votes the review received. ●total_votes(int):评论收到的总票数。 ● vine (string): Customers are invited to become Amazon Vine Voices based on the trust that they have earned in the Amazon community for writing accurate and insightful reviews. Amazon provides Amazon Vine members with free copies of products that have been submitted to the program by vendors. Amazon doesn't influence the opinions of Amazon Vine members, nor do they modify or edit reviews. ●vine(字符串):基于客户在撰写准确而有见地的评论方面所获得的信任,邀请客户成为Amazon Vine Voices。亚马逊为Amazon Vine成员提供了供应商已提交给该程序的产品的免费副本。Amazon不会影响Amazon Vine成员的意见,也不会修改或编辑评论。 ● verified_purchase (string): A “Y” indicates Amazon verified that the person writing the review purchased the product at Amazon and didn't receive the product at a deep discount. ●verify_purchase(字符串):“ Y”表示亚马逊已验证撰写评论的人在亚马逊上购买了该产品,并且没有以大幅折扣收到该产品。 ● review_headline (string): The title of the review. ●review_headline(字符串):评论的标题。 ● review_body (string): The review text. ●review_body(字符串):评论文本。 ● review_date (bigint): The date the review was written. ●review_date(bigint):撰写评论的日期。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值