2024年9.5作业

#include <iostream>
#include <cmath>
using namespace std;
class Graphical
{
    protected:
        float perm;
        float aera;

    public:  
		Graphical(){cout<<"Graphical的无参构造函数"<<endl;}
		Graphical(float p,float a):perm(p),aera(a){cout<<"Graphical的有参构造函数"<<endl;}
        virtual ~Graphical() {cout<<"Graphical的析构函数"<<endl;}  
        virtual void show()    //虚函数
		{
			cout<<"perm="<<perm<<endl;
			cout<<"area="<<aera<<endl;
		}
};
//矩形类
class Rectangle:public Graphical
{
    private:
        float length;
        float wide;

    public:
        Rectangle(){cout<<"Rectangle的无参构造函数"<<endl;}
        Rectangle(float p,float a,float l,float w):Graphical(p,a),length(l),wide(w){cout<<"Rectangle无参构造函数"<<endl;}
        ~Rectangle(){cout<<"Rectangle的析构函数"<<endl;}
        void show() override
        {
            perm=2*(length+wide);
            aera=length*wide;
            cout<<"矩形perm="<<perm<<endl;
            cout<<"矩形aera="<<aera<<endl;
        }
};
//圆类
class Circle:public Graphical
{
    private:
        float radius;

    public:
        Circle(){cout<<"Circle无参构造函数"<<endl;}
		Circle(float p,float a,float r):Graphical(p,a),radius(r){cout<<"Circle有参构造函数"<<endl;}
		~Circle(){cout<<"Circle的析构函数"<<endl;}
		void show() override 
        {
            perm=2*3.14159*radius;
            aera=3.14159*radius*radius;
            cout<<"圆perm="<<perm<<endl;
            cout<<"圆aera="<<aera<<endl;
        }
};
//三角形类
class Triangle:public Graphical
{
    private:
        float a,b,c;

    public:
        Triangle(){cout<<"Trigon无参构造函数"<<endl;}
		Triangle(float p,float a,float x,float y,float z):Graphical(p,a),a(x),b(y),c(z){cout<<"Trigon有参构造函数"<<endl;}
		~Triangle(){cout<<"Trigon的析构函数"<<endl;}
		void show() override  
        {
            float p=(a+b+c)/2;
            perm=a+b+c;
            aera=sqrt(p*(p-a)*(p-b)*(p-c));
            cout<<"三角形perm="<<perm<<endl;
            cout<<"三角形aera="<<aera<<endl;
        }
};
// 全局函数,输出图形的周长和面积  
void display(Graphical &rf)        
{
	cout<<"display"<<endl;
	rf.show();               
	return;                  
} 
  
// 主函数  
int main() 
{  
    Rectangle r1(2.5,3.5,1.0,2.0); 
    display(r1); 
    Circle c1(2.5,3.5,5.0); 
    display(c1);  
    Triangle t1(2.5,3.5,3.0,4.0,5.0);   
    display(t1);  
    return 0;  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值