C++实践参考——长方柱类

返回:贺老师课程教学链接

【项目 - 长方柱类】
  编写基于对象的程序,求3个长方柱(Bulk)的体积。数据成员包括长(length)、宽(width)、高(heigth)、体积,要求设计成员函数实现下面的功能:
  (1)由键盘输入3个长方柱的长、宽、高;
  (2)计算长方柱的体积(volume)和表面积(areas);
  (3)输出这3个长方柱的体积和表面积;

[参考解答]

写出的程序结构应该如下:

class Bulk
{//定义需要的成员函数
 //定义数据成员
};
//此处实现各成员函数
int main()
{
}

具体情况可以有多种设计。

【解决方案1】这一个方案给出用最少的数据成员(3个)和成员函数(2个)的解决办法 

#include <iostream>
using namespace std;
class Bulk
{
public:
	void get_value();
	void display();
private:
	float lengh;
	float width;
	float height;
};

void Bulk::get_value()
{
	cout<<"please input lengh, width,height:";
	cin>>lengh;
	cin>>width;
	cin>>height;
}

void Bulk::display()
{
	cout<<"The volume is: "<<lengh*width*height<<endl;
	cout<<"The surface area is: "<<2*(lengh*width+lengh*height+width*height)<<endl;
}

int main()
{
	Bulk b1,b2,b3;

	b1.get_value();
	cout<<"For bulk1: "<<endl;
	b1.display();

	b2.get_value();
	cout<<"For bulk2: "<<endl;
	b2.display();

	b3.get_value();
	cout<<"For bulk3: "<<endl;
	b3.display();
	return 0;
}

【解决方案2】相对方案1,将体积和表面积作为数据成员,并提供专门的成员函数求解(推荐用这种方案,每个函数的内聚性增强) 

#include <iostream>
using namespace std;
class Bulk
{
public:
	void get_value();
	void display();
private:
	void get_volume();  //用于内部计算的,作为私有函数有利于信息隐藏
	void get_area();
	float lengh;
	float width;
	float height;
	float volume;
	float area;
};

void Bulk::get_value()
{
	cout<<"please input lengh, width,height:";
	cin>>lengh;
	cin>>width;
	cin>>height;
	get_volume();  //长宽高获得值以后即可以计算,也可以在display中输出前计算,但综合而言,此处更佳
	get_area();
}

void Bulk::get_volume()
{
	volume=lengh*width*height;
}

void Bulk::get_area()
{
	area=2*(lengh*width+lengh*height+width*height);
}

void Bulk::display()
{
	//get_volume()和get_area()也可以在此处调用,本例中计算工作在长宽高确定后立刻进行
	cout<<"The volume is: "<<volume<<endl;
	cout<<"The surface area is: "<<area<<endl;
}

int main()
{
	Bulk b1,b2,b3;

	b1.get_value();
	cout<<"For bulk1: "<<endl;
	b1.display();

	b2.get_value();
	cout<<"For bulk2: "<<endl;
	b2.display();

	b3.get_value();
	cout<<"For bulk3: "<<endl;
	b3.display();
	return 0;
}

【解决方案3】相对方案2,将get_volume()和get_area()声明为public型。这时,这两个函数可以在main()函数中用形如b1.get_volume()和b1.get_area()的方式调用,将输入、计算、显示的流程体现在main()函数中。也可以采用如方案2中形式调用,但体现不了public的价值。这种解决方案的程序请读者自行给出。

时间: 2024-10-22 10:34:57

C++实践参考——长方柱类的相关文章

C++实践参考——用对象数组操作长方柱类

返回:贺老师课程教学链接 [项目3-用对象数组操作长方柱类]编写基于对象的程序,求5个长方柱的体积和表面积.长方柱类Bulk的数据成员包括长(length).宽(width).高(heigth)等.对照已经给出的代码,要做的工作及要求有: 需要你定义长方柱类,代码中已经给出由5个长方柱对象构成的对象数组b: B数组中的前3个对象b[0].b[1].b[2]直接参数初始了,需要定义构造函数,而初始化中,各对象提供的参数数目不同,需要有默认参数的构造函数(未给出的参数默认为1.0) 第4个对象b[3

C++第5周(春)项目3 对象数组操作长方柱类

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目3-对象数组操作长方柱类] 编写基于对象的程序,求5个长方柱的体积和表面积.长方柱类Bulk的数据成员包括长(length).宽(width).高(heigth)等. 对照已经给出的代码,要做的工作及要求有: 需要你定义长方柱类 代码中已经给出由5个长方柱对象构成的对象数组b: B数组中的前3个对象b[0].b[1].b[2]直接参数初始

C++第3周(春)项目4 长方柱类

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目4 - 长方柱类](改自教材P262第6题)仿照你阅读过的程序,编写基于对象的程序,求3个长方柱(Bulk)的体积.数据成员包括长(length).宽(width).高(heigth).体积,要求设计成员函数实现下面的功能:(1)由键盘输入3个长方柱的长.宽.高:(2)计算长方柱的体积(volume)和表面积(areas):(3)输出这3

C++第5周项目3 - 长方柱类

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8723847 [项目3]编写基于对象的程序,求5个长方柱的体积和表面积.长方柱类Bulk的数据成员包括长(length).宽(width).高(heigth)等.另外: (1)需要定义长方柱类,5个长方柱采用一个对象数组表示: (2)定义相应的构造函数以支持如下

C++第3周项目4——长方柱类

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8661031 [项目4 - 长方柱类](改自教材P262第6题)仿照你阅读过的程序,编写基于对象的程序,求3个长方柱(Bulk)的体积.数据成员包括长(length).宽(width).高(heigth).体积,要求用成员函数实现下面的功能:(1)由键盘输入3个

《C++语言基础》实践参考——指向学生类的指针

返回:贺老师课程教学链接 [项目4-指向学生类的指针] 设计一个学生类Student,数据成员包括学号(num)和成绩(score),成员函数根据需要自行设计(建议配备需要的set.get函数,以及必要的输入或输出,给出的代码中也可以找到需要成员函数的线索).在main函数中,要做到: 建立一个对象数组,通过初始化,设置5个学生的数据,要求: 用指针指向数组首元素,输出第1.3.5个学生的信息: 设计一个函数int max(Student *arr);,用指向对象的指针作函数参数,在max函数中

《C++语言基础》实践参考——复数模板类

返回:贺老师课程教学链接 [项目6-复数模板类]    阅读教材例10.1.该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定只能是double型的.可以通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时指定的实际类型.    (1)要求类成员函数在类外定义.    (2)在此基础上,再实现减法.乘法和除法    你可以使用的main()函数如下. int main( ) { Complex<int> c1(3,4),c2(5,-10),c3; //实部和虚

C++实践参考:数组类模板

[项目-数组类模板] 在数组类的基础上,将之改造为类模板,以使数组中可以存储各种类型的数据. template <class T> //数组类模板定义 class Array { private: T* list; //用于存放动态分配的数组内存首地址 int size; //数组大小(元素个数) ... }; 参考解答: #include <iostream> #include <iomanip> #include <cassert> using name

C+实践参考——日期时间类

[项目]日期时间类 定义一个日期类Date,数据成员包括年.月.日,SetDate(int y,int m,int d)和PrintDate()函数分别用于设置日期和显示日期:再定义一个时间类Time,数据成员包括时.分.秒,SetTime(int h,int m,int s)和PrintTime()函数分别用于设置时间和显示时间,在此基础上再定义一个日期时间类TimeDate,充分利用已有的两个类中提供的方法,实现日期和时间的设置和显示.请实现类TimeDate,下面是用于测试的主函数及参考运