椭球类(考察类的构建、构造函数及成员函数的定义与使用)

前言

NWAFU OOP02_01


一、题目描述

Description

定义一个椭球(Ellipsoid)类,具体要求如下:

(1) 数据成员包含三个轴的半径r1、r2、r3及圆周率PI=3.1416;

(2) 构造函数:给椭球中的数据成员赋初值。如果不给定任何初始值,则默认椭球三个半径r1=r2=r3=1.0;

(3) 设计成员函数bool IsEqual()判断两个椭球是否完全相同,返回值为布尔类型(true或false);

(4) 设计成员函数double GetVolume()用于计算椭球的体积(注:椭球的体积公式为4*PI*r1*r2*r3/3)。

Input

第一个椭球的半径和第二个椭球的半径。

Output

第一个椭球的体积,第二个椭球的体积,若第一个椭球与第二个椭球完全一样,则输出true,否则输出false。

Sample Input 1 

2 3 4
3 4 5

Sample Output 1

100.531 251.328
false

二、设计步骤

代码实现:

#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
class Ellipsoid
{
	private:
		double r1;
		double r2;
		double r3;
	public:
		static const double PI;
        //在对三个参数赋值时先进行排序
        //此举是为了防止在后面的isEqual函数中因为输入顺序不同而导致误判的情况
		Ellipsoid(double a = 1.0,double b = 1.0,double c = 1.0)
		{
			double arr[3] = {a,b,c};
			std::sort(arr,arr+3);
			r1 = arr[0];
			r2 = arr[1];
			r3 = arr[2];
		}
        //判断两椭球是否完全相同
		bool IsEqual(const Ellipsoid &cmp)
		{
			return (isEqualDouble(r1, cmp.r1) && isEqualDouble(r2, cmp.r2) && isEqualDouble(r3, cmp.r3));
		}
        //体积计算函数
		double GetVolume()
		{
			return 4*PI*r1*r2*r3/3;
		}
	private:
    //针对浮点型数据比大小,防止精度问题造成错误
    bool isEqualDouble(double a, double b, double epsilon = 1e-6) {
        return fabs(a - b) < epsilon;
    }
};

const double Ellipsoid::PI = 3.1416;

int main()
{
	double a,b,c;
    //定义两个Ellipsoid
	cin >> a >> b >> c;
	Ellipsoid A(a,b,c);
	cin >> a >> b >> c;
	Ellipsoid B(a,b,c);
	
    //输出体积 PS:要特别注意输出格式
	cout << A.GetVolume() << ' ';
	cout << B.GetVolume() << endl;
	
	if(A.IsEqual(B))
		cout << "true";
	else
		cout << "false";
	return 0;
}

总结

EOF

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值