Problem G: 平面上的点和线——Point类、Line类 (VII)
2017-05-02 19:18
288 查看
Home | Web Board | ProblemSet | Standing | Status | Statistics |
Problem G: 平面上的点和线——Point类、Line类 (VII)
Time Limit: 1 Sec Memory Limit:128 MB
Submit: 2867 Solved: 2021
[Submit][Status][Web
Board]
Description
在数学上,平面直角坐标系上的点用X轴和Y轴上的两个坐标值唯一确定,两点确定一条线段。现在我们封装一个“Point类”和“Line类”来实现平面上的点的操作。根据“append.cc”,完成Point类和Line类的构造方法和show()方法,输出各Line对象和Point对象的构造和析构次序。
接口描述:
Point::showCounter()方法:按格式输出当前程序中Point对象的计数。
Point::showSum()方法:按格式输出程序运行至当前存在过的Point对象总数。
Line::showCounter()方法:按格式输出当前程序中Line对象的计数。
Line::showSum()方法:按格式输出程序运行至当前存在过的Line对象总数。
Input
输入的第一行为N,表示后面有N行测试样例。每行为两组坐标“x,y”,分别表示线段起点和终点的x坐标和y坐标,两组坐标间用一个空格分开,x和y的值都在double数据范围内。
Output
输出格式见sample。C语言的输入输出被禁用。
Sample Input
40,0 1,11,1 2,32,3 4,50,1 1,0Sample Output
Current : 3 points.In total : 3 points.Current : 6 lines.In total : 6 lines.Current : 17 points.In total : 17 points.Current : 6 lines.In total : 7 lines.Current : 15 points.In total : 17 points.Current : 6 lines.Intotal : 8 lines.Current : 17 points.In total : 21 points.Current : 6 lines.In total : 9 lines.Current : 15 points.In total : 21 points.Current : 6 lines.In total : 10 lines.Current : 17 points.In total : 25 points.Current : 6 lines.In total : 11 lines.Current
: 15 points.In total : 25 points.Current : 6 lines.In total : 12 lines.Current : 17 points.In total : 29 points.Current : 6 lines.In total : 13 lines.Current : 15 points.In total : 29 points.Current : 9 lines.In total : 17 lines.Current : 21 points.In total
: 37 points.Current : 13 lines.In total : 21 lines.Current : 21 points.In total : 45 points.
HINT
Append Code
append.cc,[Submit][Status][Web
Board]
한국어< 中文 فارسی English ไทย
All Copyright Reserved 2010-2011
SDUSTOJ TEAM
GPL2.0 2003-2011
HUSTOJ Project TEAM
Anything about the Problems, Please Contact Admin:admin
#include <iostream> using namespace std; class Point { private: double x_,y_; static int pnum,ptotal; public: Point(){x_ = 0; y_ = 0;pnum++;ptotal++;} Point(double xx,double yy){x_ = xx;y_ = yy;pnum++;ptotal++;} Point(const Point & p){x_ = p.x_;y_ = p.y_;pnum++;ptotal++;;} ~Point(){ pnum--;} static void showCounter(){cout << "Current : " << pnum <<" points." << endl;} static void showSum(){cout << "In total : " << ptotal << " points." <<endl;} void setXY(double xx,double yy){ x_= xx;y_ = yy;} }; class Line { private: Point st,ed; static int lnum,ltotal; public: // Line():p1(),p2(){} Line():st(0,0),ed(0,0){lnum++;ltotal++;} Line(const Point &sst, const Point &eed):st(sst),ed(eed) { lnum++;ltotal++; } Line(const Line & line):st(line.st),ed(line.ed){ lnum++;ltotal++; } void show() const { } Line &setLine(double x1,double y1,double x2,double y2) { st.setXY(x1,y1); ed.setXY(x2,y2); return *this; } Line & setLine(const Line &pt) { st = pt.st;//copy ed = pt.ed; return *this; } Line & setLine(const Point &sst,const Point &eed) { st = sst;//copy ed = eed; return *this; } void readLine() { double x1,y1,x2,y2; char ch ; cin >> x1 >>ch >>y1>> x2 >> ch >>y2; st.setXY(x1,y1); ed.setXY(x2,y2); } const Point &start() const {return st;} const Point &end() const {return ed;} void setStart(const Point & pt){ st = pt;} void setEnd(const Point & pt){ed = pt;} static void showCounter() {cout << "Current : " << lnum << " lines." <<endl; } static void showSum() {cout << "In total : " << ltotal << " lines." <<endl; } ~Line() { lnum--; } }; int Point ::pnum = 0; int Line :: lnum = 0; int Line :: ltotal = 0; int Point ::ptotal = 0; int main() { int num, i; Point p(1, -2), q(2, -1), t; t.showCounter(); t.showSum(); std::cin>>num; Line line[num + 1]; for(i = 1; i <= num; i++) { Line *l1, l2; l1->showCounter(); l1->showSum(); l1 = new Line(p, q); line[i].readLine(); p.showCounter(); p.showSum(); delete l1; l2.showCounter(); l2.showSum(); q.showCounter(); q.showSum(); } Line l1(p, q), l2(p,t), l3(q,t), l4(l1); Line::showCounter(); Line::showSum(); Point::showCounter(); Point::showSum(); Line *l = new Line[num]; l4.showCounter(); l4.showSum(); delete[] l; t.showCounter(); t.showSum(); }
相关文章推荐
- Problem : 平面上的点和线——Point类、Line类 (VII)
- Problem B: 平面上的点和线——Point类、Line类 (III)
- 实验1:Problem A: 平面上的点和线——Point类、Line类 (I)
- Problem C: 平面上的点和线——Point类、Line类 (IV)
- Problem D: 平面上的点和线——Point类、Line类 (V)
- Problem I: 平面上的点和线——Point类、Line类 (V)
- Problem 平面上的点和线——Point类,line类 Ⅰ
- Problem H: 平面上的点和线——Point类、Line类 (IV)
- Problem : 平面上的点和线——Point类、Line类 (II)
- Problem B: 平面上的点和线——Point类、Line类 (III)
- Problem G: 平面上的点和线——Point类、Line类 (III)
- 平面上的点和线——Point类、Line类 (VII)
- Problem E: 平面上的点和线——Point类、Line类 (V)
- Problem : 平面上的点和线——Point类、Line类 (III)
- Problem D: 平面上的点和线——Point类、Line类 (IV)
- Problem : 平面上的点和线——Point类、Line类 (IV)
- Problem : 平面上的点和线——Point类、Line类 (V)
- 平面上的点和线——Point类、Line类 (VII)
- Problem : 平面上的点和线——Point类、Line类 (VI)
- Problem A: 平面上的点和线——Point类、Line类 (VI)