5-5 多邊形周長計算(繼承)
阿新 • • 發佈:2017-06-11
oid int return () equal while per 參數化 包含
給出下面的多邊形基類框架:
class polygon
{ protected:
int number;//邊數,最多不超過100條邊
private:
int side_length[100];//邊長數組
public:
polygon();//構造函數根據需要重載
int perimeter();//計算多邊形邊長
void display();//輸出多邊形邊數和周長
}
建立一個派生類rectangle(矩形),增加以下數據成員:
int height;
int width;
增加以下成員函數:
rectangle類的無參和參數化構造函數 int perimeter();//計算矩形邊長 void display();//輸出多邊形邊數和周長
建立一個派生類equal_polygon(等邊多邊形),增加以下數據成員:
int side_len;
增加以下成員函數:
equal_polygon類的無參和參數化構造函數
int perimeter();//計算等邊多邊形邊長
void display();//輸出多邊形邊數和周長
生成上述類並編寫主函數,根據輸入的多邊形信息,相應建立一個多邊形類對象或矩形類對象或等邊多邊形類對象,計算每一個多邊形的周長並且輸出其邊數和周長。
輸入格式: 測試輸入包含一個測試用例,該測試用例的第一行輸入多邊形的個數n,接下來n行每一行給出一個多邊形的基本信息,每行的第一個數字為當前多邊形的類型,0為一般多邊形,後面跟隨m個數字為m條邊的邊長,-1為一般多邊形邊長輸入結束標誌,1為矩形,後面跟隨兩個數字,分別為height和width,2為等邊多邊形,後面跟隨兩個數字為等邊多邊形的邊數和邊長。
輸入樣例:
3
0 32 54 76 88 24 -1
1 32 54
2 3 32
輸出樣例:
5 274
4 172
3 96
#include<iostream> using namespace std; class polygon{ protected: int number;//邊數,最多不超過100條邊 private: int side_length[100];//邊長數組 public: polygon(){};//構造函數根據需要重載 polygon(int n):number(n){}; polygon(int n,int x[]);//重載的構造函數int perimeter();//計算多邊形邊長 void display();//輸出多邊形邊數和周長 }; //繼承格式:class 類名 :<繼承方式> <基類名> //派生rectangle(矩形) class rectangle : public polygon{ private: int height; int width; public: rectangle(){};//無參構造函數 rectangle(int a,int b):height(a),width(b){};//有參構造函數 int perimeter();//計算周長 void display1();//輸出邊數和周長 }; //派生equal_polygon(等邊多邊形) class equal_polygon : public polygon{ private: int side_len; public: equal_polygon();//無參構造函數 equal_polygon(int n, int x):polygon(n){side_len = x;};//有參構造函數 void display2(); int perimeter(){return number * side_len;} }; //主函數 int main(){ int n; cin>>n; for(int i=0;i<n;i++) { int type; cin>>type; switch(type) { case 0://一般多邊形 { int n=0,lenth; int x[100]; while(cin>>lenth) { if(lenth==-1)break; x[n++]=lenth; } polygon hello0( n, x ); hello0.display(); } break; case 1://矩形 { int h,w; cin>>h>>w; rectangle hello1(h, w); hello1.display1(); } break; case 2://等邊多邊形 { int n,x; cin>>n>>x; equal_polygon hello3( n, x ); hello3.display2(); } break; } } return 0; } //equal_polygon成員函數的實現 void equal_polygon::display2() { cout<< number <<" "<< perimeter()<< endl; } //rectangle成員函數的實現 void rectangle::display1() { cout<<"4 "<<2*(height + width)<<endl; } //polygon成員函數的實現 int polygon::perimeter() { int sum=0; for(int i=0;i<number;i++) { sum += side_length[i]; } return sum; } void polygon::display() { cout<<number<<" "<<perimeter()<<endl; } polygon::polygon(int n, int x[]) { number = n ; for(int i=0;i<n;i++) { side_length[i] = x[i]; } }
5-5 多邊形周長計算(繼承)