C++第5周项目1 - 设计三角形类

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8723847


【项目1】设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化

#include<iostream>
using namespace std;
class Triangle
{public:
	double perimeter(void);//计算三角形的周长
	double area(void);//计算并返回三角形的面积
	void showMessage();
private:
	double a,b,c; //三边为私有成员数据
};


void Triangle:: showMessage()
{
	cout<<”三角形的三边长分别为:”<<a<<'\t'<<<<b<<<<'\t'<<<<c<<endl;
	cout<<"该三角形的周长为:"<< perimeter()<<'\t'<<"面积为:"<< area()<<endl<<endl;
}


void main(void)
{
	Triangle Tri1;	//定义三角形类的一个实例(对象),要求执行一个默认构造函数,三边初值均为1
	Tri1.showMessage();
	Triangle Tri2(7,8,9);	//定义三角形类的一个实例(对象)
	Tri2.showMessage();
}

  特别要求:为全面体会构造函数的各种写法,本任务要求提交多个版本的程序,体现出你已经掌握下列知识点(带参数构造函数、默认构造函数、有默认参数的构造函数、参数初始化表,先将这些个概念看书了解了。):
  (1)使用带参数构造函数,即Triangle(double x, double y, double z),三边长在调用时由实参直接给出;
  (2)设计默认构造函数,即不指定参数时,默认各边长为1;
  (3)使用有默认参数的构造函数,不给定实参时,默认边长为1;
  (4)在构造函数中使用参数初始化表对数据成员初始化。

解答1: 体现要求12

#include<iostream>
#include<Cmath>
using namespace std;
class Triangle
{
public:
	Triangle(){a=1;b=1;c=1;} //(2)设计默认构造函数,即不指定参数时,默认各边长为1;
	Triangle(double x, double y, double z)	{a=x; b=y; c=z;} //(1)使用带参数构造函数,即Triangle(double x, double y, double z),三边长在调用时由实参直接给出

	double perimeter(void);//计算三角形的周长
	double area(void);//计算并返回三角形的面积
	void showMessage();
private:
	double a,b,c; //三边为私有成员数据
};

double Triangle::perimeter(void)  
{  
    return (a + b + c);  
}  
  
double Triangle::area(void)  
{  
    double s = (a + b + c) / 2;    
    return sqrt(s * (s - a) * (s - b) * (s - c));   
} 

void Triangle::showMessage()
{
	cout<<"三角形的三边长分别为:"<<a<<' '<<b<<' '<<c<<endl;
	cout<<"该三角形的周长为:"<<perimeter()<<' '<<"面积为:"<<area()<<endl<<endl;
}

void main(void)
{
	Triangle Tri1;	//定义三角形类的一个实例(对象)
	Tri1.showMessage();
	Triangle Tri2(7,8,9);	//定义三角形类的一个实例(对象)
	Tri2.showMessage();
	system("pause");
}

解答2:体现要求(3)使用默认参数的构造函数,不给定实参时,默认边长为1。另外,将构造函数定义在了类体外。注意:由于全部参数都给出默认值,不能再重构默认构造函数。

class Triangle
{
public:
	Triangle(double x=1, double y=1, double z=1);//(3)声明使用默认参数的构造函数,不给定实参时,默认边长为1;
	double perimeter(void);//计算三角形的周长
	double area(void);//计算并返回三角形的面积
	void showMessage();
private:
	double a,b,c; //三边为私有成员数据
};

Triangle::Triangle(double x, double y, double z)	
{
	a=x; 
	b=y; 
	c=z;
}

解答3:体现要求(4)在构造函数中使用参数初始化表对数据成员初始化。换个写法而已,不过,这是一种提倡的写法。

class Triangle
{
public:
	Triangle(double x=1, double y=1, double z=1) :a(x),b(y),c(z){} //(4)使用参数初始化表
	double perimeter(void);//计算三角形的周长
	double area(void);//计算并返回三角形的面积
	void showMessage();
private:
	double a,b,c; //三边为私有成员数据
};

或者,定义在类外时:

Triangle::Triangle(double x, double y, double z):a(x),b(y),c(z){}	//(4)在构造函数中使用参数初始化表对数据成员初始化。



【项目1拓展(选做)】请自行设计一个矩形类,可以计算矩形的面积、周长、对角线,判断是否是正方形。请用上类似的构造函数,自己设计main()函数,对设计的类进行测试。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1 西安交通大学"计算机程序设计"课程应用案例 第 1 章 C++简介 目 录 第 1 章 C++简介................................................................................................................................1 案例 1 计算圆长和面积........................................................................................................1 案例 2 计算通话时间................................................................................................................2 案例 3 温度单位的换算............................................................................................................3 案例 4 计算三角形的面积........................................................................................................3 案例 1 计算圆长和面积 1.案例名称:计算圆长和面积 2.教学目的 (1)掌握数据基础 (2)掌握基本控制结构 3.案例描述 从键盘输入一个圆的半径,然后计算并输出该圆的面积和长。 4.问题分析 圆的半径可以是实数,计算结果也是实数,因此程序中的变量定义为 double , 使用关键字 const 将圆率定义为常量。 5.参考程序 #include "iostream" using namespace std; void main() { const double pi=3.14159; double r,area,len; cout<<"请输入圆的半径:"; cin>>r; area=pi*r*r; 2 len=2*pi*r; cout<<"圆面积="<<area<<endl; cout<<"圆长="<<len<<endl; } 6.思考问题 如果要计算球体的表面积和体积,程序该如何修改? 案例 2 计算通话时间 1.案例名称:计算通话时间 2.教学目的 (1)掌握数据基础 (2)掌握基本控制结构 3.案例描述 输入通话的开始时间和结束时间,然后计算通话的秒数。 4.问题分析 通话时间分别输入时、分和秒,为简化问题,假定开始时间和结束时间都在同一 天内。计算时先分别计算开始时间和结束时间相对该天零点零分零秒的总秒数, 然后再相减。 5.参考程序 #include "iostream" using namespace std; void main() { int h1,m1,s1,t1; // 开始时间 int h2,m2,s2,t2; // 结束时间 int t; // 通话时间 cout<<"请输入开始通话的时间,时分秒之间使用空格、回车键或 Tab 键 "<<endl; cin>>h1>>m1>>s1; cout<<"请输入结束通话的时间,时分秒之间使用空格、回车键或 Tab 键 "<<endl; cin>>h2>>m2>>s2; t1=h1*3600+m1*60+s1; t2=h2*3600+m2*60+s2; t=t2-t1; cout<<"通话时间为:"<<t<<"秒"; 3 } 6.思考问题 如果开始时间和结束时间在连续的两天,该如何修改程序? 案例 3 温度单位的换算 1.案例名称温度单位的换算 2.教学目的 (1)掌握数据基础 (2)掌握基本控制结构 3.案例描述 输入一个摄氏温度,然后将其转换为华氏温度。 4.问题分析 摄氏温度 C 和华氏温度 F 之间的转换公式为: F=9*C/5+32 5.参考程序 #include "iostream" using namespace std; void main() { double C,F; cout<<"请输入摄氏温度"<<endl; cin>>C; F=9*C/5+32; cout<<"转换后的华氏温度为:"<<F<<endl; } 6.思考问题 可否将程序中的两个变量定义为整? 案例 4 计算三角形的面积 1.案例名称:计算三角形的面积 2.教学目的 (1)掌握数据基础 (2)掌握基本控制结构 3.案例描述 4 从键盘输

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迂者-贺利坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值