天天看點

6-2 從shape類派生出一個正n邊形 (10 分)

在一個正n邊形(Regular Polygon)中,所有邊的邊長都相等,且所有角的度數相同(即這個多邊形是等邊、等角的)。

請從下列的抽象類shape類擴充出一個正n邊形類RegularPolygon,這個類将正n邊形的邊數n和邊長s作為私有成員,類中包含初始化邊數n和邊長s的構造函數。

class shape {// 形狀類
public:
 double getArea()  // 求面積
 {return -1;}
 double getPerimeter() // 求周長
 {return -1;}
};
           

計算正n邊形的面積公式為: Area=n×a×a/(tan((180度/n))×4);

注意:需要将角度轉換成弧度後再計算三角函數。π取3.1415926

函數接口定義:

類名:RegularPolygon
           

裁判測試程式樣例:

#include <iostream>
#include <cmath> 
using namespace std;

class shape {// 形狀類
public:
 double getArea()  // 求面積
 {return -1;}
 double getPerimeter() // 求周長
 {return -1;}
};
/* 請在這裡填寫答案 */
//Your code will be embed-ed here.

int main()
{
    int n; 
    double s;

    cin>>n>>s;
    RegularPolygon p(n,s);
    cout<<p.getArea()<<endl;

    cout<<p.getPerimeter()<<endl;

    return 0;
}
           

輸入樣例:

在這裡給出一組輸入。例如:

5   3.3
           

輸出樣例:

在這裡給出相應的輸出。例如:

18.736
16.5
           

代碼

class RegularPolygon:public shape{
    private:
        int n;
        double s;
    public:
        RegularPolygon(int nn, double ss):n(nn), s(ss)
        {
        }
        double getArea(){
            return n*s*s/(tan((3.1415926/n))*4);
        }
        double getPerimeter(){
            return n * s;
        }
};

           
c++

繼續閱讀