1. 程式人生 > >5-5 多邊形周長計算(繼承)

5-5 多邊形周長計算(繼承)

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 多邊形周長計算(繼承)