在一个正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 { // 正n边形类,继承自形状类
private:
int n; // 边数
double s; // 边长
public:
// 构造函数
RegularPolygon(int n, double s) : n(n), s(s) {}
// 计算面积
double getArea() {
// 计算角度对应的弧度
double radian = 3.1415926 / n;
// 使用公式计算面积
return n * s * s / (tan(radian) * 4);
}
// 计算周长
double getPerimeter() {
// 周长为边数乘以边长
return n * s;
}
};