c++練習問題---Shape抽象クラス

1300 ワード

6-1 Shape抽象クラス(30点)
既知の抽象クラスShapeは、計算面積getArea()と計算周長getPerim()の2つの純粋な虚関数を定義する.Shapeクラスから矩形クラスRectangleと円クラスCircleを派生させ、それぞれの面積と周長を計算し、main関数から与えられたテストコードに従って所定の入力を完了してください.
Shapeクラスの定義とテストプログラムは以下の通りです.
#include 
using namespace std;
const double PI=3.14;
class Shape {
public:
	virtual double getArea()=0;
	virtual double getPerim()=0;
};

/*          */

int main(){
	double r,l,w;
	cin>>r;
	cin>>l>>w;
	Shape *p=NULL;
	p=new Circle(r);
	print(p);//        
	p=new Rectangle(l,w);
	print(p);//         
	return 0;	
}

サンプルを入力:
1 2 3

出力サンプル:
Area:3.14
Perimeter:6.28
Area:6
Perimeter:10

コードの例:
class Circle:public Shape
{
	private:
		double r;
	public:
		Circle(double r_):r(r_)
		{
			
		}
	 double getArea(){
	 	return 3.14*r*r;
	 }
	 double getPerim(){
	 	return 2*3.14*r;
	 }
 }; 
class Rectangle:public Shape//      ,    ,     
{
	private:
		double a,b;
	public:
		Rectangle(double a_,double b_):a(a_),b(b_)
		{
			
		}
		double getArea()
		{
			return a*b;
		}
		double getPerim()
		{
			return 2*(a+b);
		}
};
void print(Shape *p)//print        ,        ,     
{
	cout<getArea()<getPerim()<