抽象ベースクラスShape派生3クラス

11811 ワード

抽象ベースクラスShapeを宣言し、3つのクラス、円形Circle、矩形Rectangle、三角形Triangleを派生させ、1つの関数で3つの面積を出力します.
入力形式:1行に5個の数、円の半径、長方形の高さと幅、三角形の高さと底を順番に入力し、中央をスペースで区切る
出力フォーマット:円の面積、長方形の面積、三角形の面積、小数点後に2桁の有効数字を残し、面積ごとに1行を占めます.
入力サンプル:ここで入力のセットを指定します.例:
3 3 4 3 4出力サンプル:ここでは対応する出力が与えられる.例:
28.27 12.00 6.00
マイコード:
#include 
using namespace std;
class Shape{
	protected:
    double r,hr,wr,ht,wt;
    public:
    virtual void display()=0;
    Shape(){
        r=0;
        hr=0;
        wr=0;
        ht=0;
        wt=0;
    }
};
class Circle:public Shape{
    public: 
    Circle(double R,double HR,double WR,double HT,double WT){
        r=R;
        hr=HR;
        wr=WR;
        ht=HT;
        wt=WT;
    }
    void display(){
        printf("%.2lf
"
,r*r*3.1415+0.0005); } }; class Rectangle:public Shape{ public: Rectangle(double R,double HR,double WR,double HT,double WT){ r=R; hr=HR; wr=WR; ht=HT; wt=WT; } void display(){ printf("%.2lf
"
,hr*wr+0.0005); } }; class Triangle:public Shape{ public: Triangle(double R,double HR,double WR,double HT,double WT){ r=R; hr=HR; wr=WR; ht=HT; wt=WT; } void display(){ printf("%.2lf
"
,0.5*ht*wt+0.0005); } }; int main(){ double r,hr,wr,ht,wt; Shape *s; cin>>r>>hr>>wr>>ht>>wt; Circle C(r,hr,wr,ht,wt); Rectangle R(r,hr,wr,ht,wt); Triangle T(r,hr,wr,ht,wt); s=&C; s->display(); s=&R; s->display(); s=&T; s->display(); return 0; }