c++練習問題---Shape抽象クラス
1300 ワード
6-1 Shape抽象クラス(30点)
既知の抽象クラスShapeは、計算面積getArea()と計算周長getPerim()の2つの純粋な虚関数を定義する.Shapeクラスから矩形クラスRectangleと円クラスCircleを派生させ、それぞれの面積と周長を計算し、main関数から与えられたテストコードに従って所定の入力を完了してください.
Shapeクラスの定義とテストプログラムは以下の通りです.
サンプルを入力:
出力サンプル:
コードの例:
既知の抽象クラス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()<