抽象ベースクラス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
マイコード:
入力形式: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;
}