• C++面向对象练习(三)—— 继承的简单练习


    概览:C++面向对象练习:继承。

    本文首发于我的个人博客www.colourso.top,欢迎来访。

    代码全部运行于VS2019

    博客后续会持续更新补充。

    题目

    试定义类TRI (三角形)及其派生类COL (三角柱体)。其中三角形类可以计算三角形的面积和周长;三角柱体类可以计算柱体的体积和表面积。具体要求如下:

    (1) TRI的成员如下:

    • 私有数据成员

      • double x,y,z;分别表示三角形三条边的长度
    • 公有成员函数

      • TRI (double x1,double y1,double z1);构造函数,用x1,y1,z1 分别初始化三角形的三条边。在初始化之前,必须先判断x1、y1、 z1能否构成三角形,如果不能构成三角形,则给出提示并退出程序。判断三条边是否构成三角形的方法:任意两边之和大于第三边。
      • virtual double area();虚函数,计算三角形的面积.计算公式为:面积=[s(s-x)(s-y)*(s-z)]^0.5.其中,x、y、z分别为三角形三条边的长度,s= (x+y+z)/2。
      • double peri(); 计算三角形的周长。

    (2)类COL为类TRI的公有派生类,其成员如下:

    • 私有数据成员
      • double height;表示三角柱体的高度。
    • 公有成员函数
      • COL (double x1,double y1,double z1,double h);构造函数,用h初始化height,用x1、y1、z1分别初始化基类的成员x、y、z。
      • double volume();计算三角柱体的体积。计算公式:体积=底面积X高,其中底面积通过调用基类的成员函数area()计算。
      • double area();计算三角柱体的表面积。计算公式:表面积=2X底面积+底面周长X高度,其中底面积和底面周长分别通过调用基类的成员函数area()和prei()计算。

    (3)在主函数中,创建一个COL对象co和一个TRI指针*tr,并将tr指向co。通过co调用volume(),计算并输出三角柱体的体积;通过tr调用area(), 计算并输出三角柱体的表面积。

    题目来源与参考链接:C++面向对象程序设计50道编程题(第23题)

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    class TRI
    {
    public:
        TRI(double x1, double y1, double z1);
        double peri();          //计算周长
        virtual double area();  //计算面积
    private:
        double x, y, z;
    };
    
    class COL:public TRI
    {
    public:
        COL(double x1, double y1, double z1, double h);
        double volume();    //计算体积
        double area();      //计算面积
    private:
        double height;
    };
    
    TRI::TRI(double x1, double y1, double z1)
    {
        if (x1 + y1 <= z1)
        {
            cout << "无法构成三角形!" << endl;
            exit(0);
        }
    
        this->x = x1;
        this->y = y1;
        this->z = z1;
    }
    
    double TRI::peri()
    {
        return x+y+z;
    }
    
    double TRI::area()
    {
        double s = (x+y+z)/2;
        double areas = sqrt(s*(s-x)*(s-y)*(s-z));
        return areas;
    }
    
    COL::COL(double x1, double y1, double z1, double h):TRI(x1, y1, z1)
    {
        this->height = h;
    }
    
    double COL::volume()
    {
        double are = TRI::area();
        double vol = are * height;
        return vol;
    }
    
    double COL::area()
    {
        double are = TRI::area();
        double oth = TRI::peri()*height;
        are = 2 * are + oth;
        return are;
    }
    
    int main()
    {
        double x, y, z, h;
        cout << "请输入三角锥的底边三边长和高:" << endl;
        cin >> x >> y >> z >> h;
        COL co(x,y,z,h);
        TRI* tr = &co;
    
        cout << "三角锥的体积: ";
        cout << co.volume() << endl;
    
        cout << "三角锥的表面积: ";
        cout << tr->area() << endl;
    }
    

    本文首发于我的个人博客www.colourso.top,欢迎来访。

  • 相关阅读:
    剑指 Offer——13. 调整数组顺序使奇数位于偶数前面
    剑指 Offer——3. 从尾到头打印链表
    剑指 Offer——2. 替换空格
    剑指 Offer——1. 二维数组中的查找
    LeetCode 905. Sort Array By Parity 按奇偶校验排列数组
    LeetCode 448. Find All Numbers Disappeared in an Array找到所有数组中消失的元素
    SSH 代码笔记
    anaconda3安装caffe
    opencv多版本安装
    人脸文章与数据库
  • 原文地址:https://www.cnblogs.com/colourso/p/12774446.html
Copyright © 2020-2023  润新知