椭圆的面积和周长怎么求

要求:有详细代码和适当的注释,采用缩进格式书写,函数和变量的名称应遵循见名知意的原则。都不要求写出主函数。 实现一个抽象基类CShape,用于描述平面图形,其中包含有3个虚函数:输入数据、求周长、求面积;实现CShape的4个具体派生类,分别是三角形类CT、圆形类CC、矩形类CR,椭圆类CE,此外,CR还有一个正文形的派生类CSQ,在所有层级的具体派生类中分别实现上述3个虚函数,要满足每个派生类的特性。

#include "stdafx.h"
 
class CShap
{
public:
    virtual ~CShap(){};
 
    virtual void AddData(float a){}; //输入数据
    virtual void AddData(float a, float b){}; //输入数据
    virtual void AddData(float a, float b, float c, float d){}; //输入数据
 
    virtual float Perimeter() = 0;//求周长
    virtual float Area() = 0; //求面积
};
 
//三角形
class CT : public CShap
{
private:
    float m_botton;
    float m_height;
    float m_sidLeft;
    float m_sidRight;
 
public:
    CT():
    m_botton(0.0f),
    m_height(0.0f),
    m_sidLeft(0.0f),
    m_sidRight(0.0f)
    {
    };
    virtual ~CT(){};
 
    //输入数据
    virtual void AddData(float height, float botton, float sidLeft, float sidRight)
    {
        m_botton = botton;
        m_height = height;
        m_sidLeft = sidLeft;
        m_sidRight = sidRight;
    }
 
    //求周长
    virtual float Perimeter()
    {
        return m_botton + m_sidLeft + m_sidRight;
    }
 
    //求面积
    virtual float Area()
    {
        return m_botton * m_height / 2.0f;
    }
};
 
//园
class CC : public CShap
{
private:
    float m_radius;
 
public:
    CC():
    m_radius(0.0f)
    {
    }
    virtual ~CC(){};
 
    //输入数据
    virtual void AddData(float radius)
    {
        m_radius = radius;
    }
 
    //求周长
    virtual float Perimeter()
    {
        return 2.0f * 3.14f * m_radius;
    }
 
    //求面积
    virtual float Area()
    {
        return (2.0f * 3.14f) * (m_radius * m_radius);
    }
};
 
//矩形
class CR : public CShap
{
private:
    float m_width;
    float m_height;
 
public:
    CR():
    m_width(0.0f),
    m_height(0.0f)
    {
    }
    virtual ~CR(){};
 
    //输入数据
    virtual void AddData(float width, float height)
    {
        m_width = width;
        m_height = height;
    }
 
    //求周长
    virtual float Perimeter()
    {
        return (m_width + m_height) * 2.0f;
    }
 
    //求面积
    virtual float Area()
    {
        return m_width * m_height;
    }
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    CShap* pCC = new CC();
    CShap* pCT = new CT();
    CShap* pCR = new CR();
 
    pCC->AddData(12);
    pCT->AddData(12,32,12,32);
    pCR->AddData(123,32);
 
    float ccArea = pCC->Area();
    float ctArea = pCT->Area();
    float crArea = pCR->Area();
 
    float ccPerimeter = pCC->Perimeter();
    float ctPerimeter = pCT->Perimeter();
    float crPerimeter = pCR->Perimeter();
 
    delete pCC;
    delete pCT;
    delete pCR;
    return 0;
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632