2772 - 求面积和周长

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

声明一个Shape抽象类,在此基础上派生出矩形Rectangle和圆Circle类,二者都有GetArea( )函数计算对象的面积,GetPerim( )函数计算对象的周长。完成类的设计,其中PI取3.14159,要求不能修改主函数。

int main(){

 double radius;//圆半径
 double a,b;//矩形长和宽
 cin>>radius>>a>>b;
 Circle c(radius);
 Rectangle rect(a,b);
 Shape* pShapeArray[]={&c,&rect};
 for (int i=0;i<2;i++){
  cout<<"perimeter:"<<pShapeArray[i]->GetPerim( )<<endl;
  cout<<"area:"<<pShapeArray[i]->GetArea()<<endl;
 }
 return 0;
}

题目输入

输入2行,第1行输入圆的半径,第2行输入矩形的长和宽。

题目输出

输出圆和矩形的周长与面积。

输入/输出样例

输入格式

1
2 3

输出格式

perimeter:6.28318
area:3.14159
perimeter:10
area:6

C++解答

#include<iostream>
using namespace std;
class Shape
{public:
Shape(){}
~Shape(){}
virtual float GetPerim()=0;
virtual float GetArea()=0;
};
class Rectangle:public Shape
{public:
Rectangle(float i,float j):L(i),W(j){}
~Rectangle(){}
float GetPerim(){return 2*(L+W);}
float GetArea(){return L*W;}
private:
float L,W;
};
class Circle:public Shape
{public:
Circle(float r):R(r){}
float GetPerim(){return 3.14159*2*R;}
float GetArea(){return 3.14159*R*R;}
private:
float R;
};




int main(){
 double radius;//圆半径
 double a,b;//矩形长和宽
 cin>>radius>>a>>b;
 Circle c(radius);
 Rectangle rect(a,b);
 Shape* pShapeArray[]={&c,&rect};
 for (int i=0;i<2;i++){
  cout<<"perimeter:"<<pShapeArray[i]->GetPerim( )<<endl;
  cout<<"area:"<<pShapeArray[i]->GetArea()<<endl;
 }
 return 0;
}