第11周C++上機報告(點與直線,繼承與派生)
阿新 • • 發佈:2019-02-10
/* * 程式的版權和版本宣告部分 * Copyright (c)2012, 煙臺大學計算機學院學生 * All rightsreserved. * 檔名稱: object.cpp * 作者:王昕彤 * 完成日期: 2013年 5 月 20 日 * 版本號: v1.0 * 輸入描述:定義點類,並以點類為基類,派生出直線類,從基類中繼承的點的資訊表示直線的中點。 * 問題描述: * 程式輸出: */ #include<iostream> #include<Cmath> using namespace std; class Point //定義座標點類 { public: Point():x(0),y(0) {}; Point(double x0, double y0):x(x0), y(y0) {}; void PrintPoint(); //輸出點的資訊 double x,y; //資料成員,表示點的橫座標和縱座標 }; void Point::PrintPoint() { cout<<"Point:("<<x<<","<<y<<")"; //輸出點 } class Line: public Point //利用座標點類定義直線類, 其基類的資料成員表示直線的中點 { public: Line(Point pt1, Point pt2); //建構函式,初始化直線的兩個端點及由基類資料成員描述的中點 double Length(); //計算並返回直線的長度 void PrintLine();//輸出直線的兩個端點和直線長度 private: class Point pts,pte; //直線的兩個端點 }; //下面定義Line類的成員函式 Line::Line(Point pt1, Point pt2):Point((pt1.x+pt2.x)/2,(pt1.y+pt2.y)/2) { pts=pt1; pte=pt2; } double Line::Length() { return sqrt((pts.x-pte.x)*(pts.x-pte.x)+(pts.y-pte.y)*(pts.y-pte.y)); } void Line::PrintLine() { cout<<"線的兩端點為:("<<pts.x<<","<<pts.y<<") ("<<pte.x<<","<<pte.y<<")"<<endl; cout<<"線的長度為:"<<Length(); } int main() { Point pt1(-2,5),pt2(7,9); Line l(pt1,pt2); l.PrintLine();//輸出直線l的資訊(請補全程式碼) cout<<"\n The middle point of Line: "; l.PrintPoint();//輸出直線l中點的資訊(請補全程式碼) return 0; }
執行結果: