博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Problem E: 平面上的点和线——Point类、Line类 (V)
阅读量:6251 次
发布时间:2019-06-22

本文共 4624 字,大约阅读时间需要 15 分钟。

Description

在数学上,平面直角坐标系上的点用X轴和Y轴上的两个坐标值唯一确定,两点确定一条线段。现在我们封装一个“Point类”和“Line类”来实现平面上的点的操作。
根据“append.cc”,完成Point类和Line类的构造方法和show()方法,输出各Line对象和Point对象的构造和析构次序。
接口描述:
Point::show()方法:按格式输出Point对象。
Line::show()方法:按格式输出Line对象。
Line::SetLine(double, double, double, double)方法:设置Line对象起点的x,y坐标(第一个和第二参数)和终点的x,y坐标(第三个和第四个坐标),并返回本对象
Line::SetLine(const Point &, const Point &)方法:设置Line对象的起点(第一个参数)和终点(第二个坐标),并返回本对象
Line::SetLine(const Line&)方法:设置Line对象,复制参数的坐标,并返回本对象
Line::readLine()方法:从标准输入上读入坐标,格式见Sample

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 : (0, 0) is created. Line : (0, 0) to (0, 0) is created. Point : (0, 0) is created. Point : (0, 0) is created. Line : (0, 0) to (0, 0) is created. Point : (0, 0) is created. Point : (0, 0) is created. Line : (0, 0) to (0, 0) is created. Point : (0, 0) is created. Point : (0, 0) is created. Line : (0, 0) to (0, 0) is created. Line : (0, 0) to (1, 1) Line : (1, 1) to (2, 3) Line : (2, 3) to (4, 5) Line : (0, 1) to (1, 0) 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 : (1, -2) is copied. Point : (2, -1) is copied. Line : (1, -2) to (2, -1) is copied. Line : (1, -2) to (2, -1) Line : (1, -2) to (2, -1) 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 (2, -1) is erased. Point : (2, -1) 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. Line : (0, 1) to (1, 0) is erased. Point : (1, 0) is erased. Point : (0, 1) is erased. Line : (2, 3) to (4, 5) is erased. Point : (4, 5) is erased. Point : (2, 3) is erased. Line : (1, 1) to (2, 3) is erased. Point : (2, 3) is erased. Point : (1, 1) is erased. Line : (0, 0) to (1, 1) is erased. Point : (1, 1) is erased. Point : (0, 0) is erased. Point : (0, 0) is erased. Point : (2, -1) is erased. Point : (1, -2) is erased.

HINT

Append Code

,
int
main()
{
    
int
num, i;
    
Point p(1, -2), q(2, -1), t;
    
t.show();
    
std::cin>>num;
    
Line line[num];
    
for
(i = 0; i < num; i++)
    
{
        
line[i].readLine();
        
line[i].show();
    
}
    
Line l1(p, q), l2(p,t), l3(q,t), l4(l1);
    
l1.show();
    
l2.setLine(l1).show();
    
l3.show();
    
l4.setLine(t,q).show();
}
 
代码
#include<iostream>
using
namespace
std;
 
class
Point{
        
friend
class
Line;
private
:
    
double
x,y;
public
:
    
Point(
double
a=0,
double
b=0):x(a),y(b){cout<<
"Point : ("
<<x<<
", "
<<y<<
") is created."
<<endl;}
    
Point(
const
Point&p){x=p.x;y=p.y;cout<<
"Point : ("
<<x<<
", "
<<y<<
") is copied."
<<endl;}
    
~Point(){cout<<
"Point : ("
<<x<<
", "
<<y<<
") is erased."
<<endl;}
    
void
show(){cout<<
"Point : ("
<<x<<
", "
<<y<<
")"
<<endl;}
};
class
Line{
        
friend
class
Point;
private
:
    
Point p1,p2;
public
:
    
Line(Point &p,Point &q):p1(p),p2(q){cout<<
"Line : ("
<<p1.x<<
", "
<<p1.y<<
") to ("
<<p2.x<<
", "
<<p2.y<<
") is created."
<<endl;}
    
Line(
double
x1=0,
double
y1=0,
double
x2=0,
double
y2=0):p1(x1,y1),p2(x2,y2){cout<<
"Line : ("
<<p1.x<<
", "
<<p1.y<<
") to ("
<<p2.x<<
", "
<<p2.y<<
") is created."
<<endl;}
  
 
Line(
const
Line&l):p1(l.p1),p2(l.p2){cout<<
"Line : ("
<<p1.x<<
", "
<<p1.y<<
") to ("
<<p2.x<<
", "
<<p2.y<<
") is copied."
<<endl;}
    
~Line(){cout<<
"Line : ("
<<p1.x<<
", "
<<p1.y<<
") to ("
<<p2.x<<
", "
<<p2.y<<
") is erased."
<<endl;}
    
Line& setLine(
double
a,
double
b,
double
c,
double
d){p1.x=a;p1.y=b;p2.x=c;p2.y=d;
return
*
this
;}
    
Line& setLine(
const
Point &p,
const
Point &q){p1=p;p2=q;
return
*
this
;}
    
Line& setLine(
const
Line& l){*
this
=l;
return
*
this
;}
    
void
show(){cout<<
"Line : ("
<<p1.x<<
", "
<<p1.y<<
") to ("
<<p2.x<<
", "
<<p2.y<<
")"
<<endl;}
    
void
readLine(){
char
c;cin>>p1.x>>c>>p1.y>>p2.x>>c>>p2.y;}
};
 
 
 
int
main()
{
    
int
num, i;
    
Point p(1, -2), q(2, -1), t;
    
t.show();
    
std::cin>>num;
    
Line line[num];
    
for
(i = 0; i < num; i++)
    
{
        
line[i].readLine();
        
line[i].show();
    
}
    
Line l1(p, q), l2(p,t), l3(q,t), l4(l1);
    
l1.show();
    
l2.setLine(l1).show();
    
l3.show();
    
l4.setLine(t,q).show();
}

转载于:https://www.cnblogs.com/go-ahead-TT/p/6724784.html

你可能感兴趣的文章
顺序图【6】--☆☆
查看>>
Docker 版本
查看>>
【ABP杂烩】面向切面编程(AOP)知识总结
查看>>
java 如何使用多线程调用类的静态方法?
查看>>
不能运行VS2005的DSL Tool例子
查看>>
OSI/RM参考模型和TCP/IP协议的关系
查看>>
Android Intent用法汇总
查看>>
使用PIP扩展BTARN
查看>>
GetLastError()返回值及含义
查看>>
android UI之Shape详解_GradientDrawable
查看>>
Oracle Management Server配置
查看>>
O/R Mapping实际开发经验之谈(转)
查看>>
SPSS Clementine 数据挖掘入门 (3)
查看>>
Hosting the WCF service
查看>>
xampp下php环境的设置
查看>>
以消息为基础,以事件驱动之(message based, event driven)-- 《深入浅出MFC》
查看>>
如何建立合适的索引?
查看>>
FF或将支持返回一个HTML文档对象
查看>>
QtGui.QCalendarWidget
查看>>
高内聚低耦合 浅析
查看>>