木木猪猪 2021-05-22 09:49 采纳率: 100%
浏览 355
已采纳

实现一个抽象基类CShape,用于描述平面图形,其中包含有3个虚函数:输入数据、求周长、求面积等

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

2.编程题,将所有代码写在主函数中:打开一个任意类型的文件,统计每种字节(0 - 255)的出现次数,按字节值从小到大的顺序,输出出现次数大于0的字节值及对应的出现次数。

  • 写回答

2条回答 默认 最新

  • technologist_30 2021-05-22 11:03
    关注
    #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;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法