1064: C++:多态性2(图形的面积)

题目描述
定义一个形状类shape,将它作为基类派生出类:circle(圆)、triangle(三角形)和rectangle(长方形)。

分别定义这些派生类并且定一个虚函数来计算各个形状的面积。

输入
包含多组测试例, 每组数据的占1行,分别是圆的半径、三角形的三条边长和长方形的两条边长。
输出
圆、三角形、长方形的面积(保留3位小数)。
样例输入 Copy
10 3 4 5 6 8
15.5 5.8 12.5 13.4 10.56 12.54
样例输出 Copy
314.000
6.000
48.000
754.385
36.158
132.422
提示
#define PI 3.14

# include <iostream>
using namespace std;
# include <cmath>
# include <iomanip>

class shape
{
public:
	
	virtual void area(){}
};

class circle :public shape
{
public:
	circle(double r_): r(r_){}
	void area()
	{
		cout << r * 3.14 * r << endl;
	}

private:
	double r;
};

class trangle :public shape
{
public:
	trangle(double x_, double y_, double m_):x(x_), y(y_), m(m_){}
	void area()
	{
		double s = (x + y + m) / 2;
		cout << sqrt(s * (s - x) * (s - y) * (s - m)) << endl;
	}
private:
	double x, y, m;

};

class rectangle :public shape
{
public:
	rectangle(double x_, double y_):x(x_), y(y_){}
	void area()
	{
		cout << x*y << endl;
	}
private:
	double x, y;
};

int main()
{
	shape* p;
	double a, b, cc, d, e, f;

	while (cin >> a >> b >> cc >> d >> e >> f)
	{	
		cout << fixed << setprecision(3);
		circle c(a);
		p = &c;
		p->area();
		trangle t(b, cc, d);
		p = &t;
		p->area();
		rectangle r(e, f);
		p = &r;
		p->area();
	}

	return 0;
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值