题目要求:
定义一个三角形类(TRI)及其派生类三角柱体类(COL)。其中三角形类可以计算三角形的面积和周长;三角柱体类可以计算柱体的体积和表面积。其具体要求如下:
(1)TRI的成员如下:
私有数据成员
double x,y,z; 分别表示三角形三条边的长度
公有成员函数
TRI(double x1,double y1,double z1); 构造函数,用x1,y1,z1分别初始化三角形的三条边。在初始化 之前,必须先判断x1,y1,z1能否构成三角形,如果不能构成三角形,则给出提示并推出程序。
virtual double area();虚函数,计算三角形的面积。
double peri(); 计算三角形的周长。
(2)类COL为类TRI的公有派生类,其成员如下:
私有数据成员
double height; 表示三角柱体的高度。
公有成员函数
COL(double x1,double y2,double z1,double h);构造函数,用h初始化height,用x1、y2、z1分别初始化基类的成员x,y,z。
double volume();计算三角柱体的体积。
double area();计算三角柱体的表面积。
(3)Main函数实现如下:
在主函数中,创建一个COL对象co和一个TRI指针*tr,并将tr指向co。通过co调用volume()计算并输出三角柱体的体积;通过tr调用area()计算并输出三角柱体的表面积
代码描述:
1.创建TRI类
创建TRI.h文件,用于声明TRI类
#pragma once
#include<iostream>
#include<cmath>
using namespace std;
//定义TRI(三角形)类
class TRI
{
private:
double x, y, z; //三条边
public:
TRI(double x1, double y1, double z1); //构造函数
virtual double area(); //虚函数,计算三角形的面积
double peri(); //计算三角形的周长
};
2.实现TRI类
创建TRI.cpp文件,用于实现TRI类
//导入TRI类的声明文件
#include "TRI.h"
//构造函数,初始化三条边,判断能否构成三角形,不能则输出提示信息
TRI::TRI(double x1, double y1, double z1)
{
if (x1 + y1 <= z1 || x1 + z1 <= y1 || z1 + y1 <= x1) {
cout << "这三条边不能构成三角形!" << endl;
}
x = x1;
y = y1;
z = z1;
}
//计算三角形的面积
double TRI::area()
{
double p = (x + y + z) / 2.0;
return sqrt(p * (p - x) * (p - y) * (p - z));
}
//计算三角形的周长
double TRI::peri()
{
return x+y+z;
}
3.创建COL类
创建COL.h文件,用于声明COL类
#pragma once
//导入TRL(三角形)类的声明文件
#include"TRI.h"
//定义COL(三角柱体)类 使用公有的方式继承TRI(三角形)类
class COL:public TRI
{
private:
double height; //三角柱的高
public:
//构造函数,用h初始化height,用x1、y2、z1分别初始化基类的成员x,y,z。
COL(double x1, double y1, double z1, double h);
double volume(); //计算三角柱体的体积。
double area(); //计算三角柱体的表面积。
};
4.实现COL类
创建COL.cpp文件,用于实现COL类
//导入COL(三角柱体)的声明文件
#include "COL.h"
//构造函数,初始化三条边和高
COL::COL(double x1, double y1, double z1, double h):TRI(x1,y1,z1)
{
this->height = h;
}
//计算三角柱的体积
double COL::volume()
{
//v= s*h; 体积
return TRI::area() * this->height;
}
//计算三角柱的表面积
double COL::area()
{
return TRI::area() * 2 + TRI::peri() * this->height;
}
5.Main函数的实现
创建main.cpp实现各个类的功能
//导入三角柱体类
#include"COL.h"
int main() {
//定义三角柱体的三条边和高度
double x, y, z, h;
cout << "输入三角柱体的三条边和高的长度:"<<endl;
//输入三角柱体的三条边和高度
cin >> x >> y >> z >> h;
//初始化COL对象
COL co = COL(x,y,z,h);
TRI* tr = &co;
cout<<"三角柱体的体积:" << co.volume() << endl;
cout <<"三角柱体的表面积:" << tr->area() << endl;
return 0;
}
样例输出:
样例1:
样例2: