【sy2_类的进一步应用与编程_1_Tri】

实验内容

(1) 建立一个三角形类
① 使用带默认形参值(三条边长均为1)的构造函数,分别使用默认值和自定义值构造两个对象,并计算两个三角形的面积。
②利用带参数的构造函数使用建立动态对象的方法建立两个对象,计算并输出面积后,删除两个对象。
③利用拷贝构造函数实现对象间的赋值。

实现思路
1、操作步骤:

(1)Tri类的声明:

class Tri
{		//类的主体		
private://静态属性==》类的数据成员  
	float a;						  //边长1	
	float b;						  //边长2                
	float c;						  //边长3
	float s;						  //中间值                             
public://动态功能==》类的函数成员					 
	Tri(float a1,float b1,float c1);	//带默认值的构造函数
    Tri(const Tri & T);				   //拷贝构造函数
	float area( );					  //面积计算																
};

(2)三角形类动态功能实现

(a)带默认值的构造函数

Tri::Tri(float a1=1,float b1=1,float c1=1)
{
	a=a1;
	b=b1;
	c=c1;
	cout<<"三角形三个边:";
    cout<<"a="<<a<<" "<<"b="<<b<<" "<<"c="<<c<<endl;
}

(b)拷贝构造函数

Tri::Tri(const Tri & tri)
{
	a=tri.a;
	b=tri.b;
	c=tri.c;
	cout<<"拷贝构造函数的三角形三个边:";
	cout<<"a="<<tri.a<<" "<<"b="<<tri.b<<" "<<"c="<<tri.c<<endl;
}

(c)面积计算

float Tri::area()
{
	if(a+b>c && a+c>b && b+c>a)
	{
		s=(a+b+c)/2;
		return (sqrt(s*(s-a)*(s-b)*(s-c)));
	}
	else
	{
		cout<<"提示:给出的三角形三条边不符合三角形三边长度规则"<<endl;
		return -1;
	}
}

(3)主函数

int main() 
{
	Tri tri1;
	cout<<"三角形面积为:area1="<<tri1.area()<<endl;
	cout<<endl;
	Tri tri2(2,3,4);
	cout<<"三角形面积为:area2="<<tri2.area()<<endl;
	cout<<endl;
	Tri * tri3=new Tri(6,6,6);
	cout<<"三角形面积为:area3="<<tri3->area()<<endl;
	delete tri3;
	cout<<endl;
	Tri * tri4;
	tri4=new Tri(10,10,25);
	cout<<"三角形面积为:area4="<<tri4->area()<<endl;
	delete tri4;
	cout<<endl;
	Tri tri5(tri2);
	cout<<"使用拷贝构造函数调用输出的三角形面积为:area5="<<tri5.area()<<endl;
	return 0;
}
2、整段代码:

Tri.h文件

#include <iostream>
#include <math.h>
using namespace std;
class Tri
{
	private:
		float a;
		float b;
		float c;
		float s;
	public:
	
		Tri(float a1,float b1,float c1);
		Tri(const Tri & T);
		float area();
};
Tri::Tri(float a1=1,float b1=1,float c1=1)
{
		a=a1;
		b=b1;
		c=c1;
		cout<<"三角形三个边:";
		cout<<"a="<<a<<" "<<"b="<<b<<" "<<"c="<<c<<endl;
}
Tri::Tri(const Tri & tri)
{

		a=tri.a;
		b=tri.b;
		c=tri.c;
		cout<<"拷贝构造函数的三角形三个边:";
		cout<<"a="<<tri.a<<" "<<"b="<<tri.b<<" "<<"c="<<tri.c<<endl;	
}
float Tri::area()
{
	if(a+b>c && a+c>b && b+c>a)
	{
		s=(a+b+c)/2;
		return (sqrt(s*(s-a)*(s-b)*(s-c)));
	}
	else
	{
		cout<<"提示:给出的三角形三条边不符合三角形三边长度规则"<<endl;
		return -1;
	}
}

T ri_main.cpp文件

#include <iostream>
#include "Tri.h"
using namespace std;
int main() 
{
	Tri tri1;
	cout<<"三角形面积为:area1="<<tri1.area()<<endl;
	cout<<endl;
	Tri tri2(2,3,4);
	cout<<"三角形面积为:area2="<<tri2.area()<<endl;
	cout<<endl;
	Tri * tri3=new Tri(6,6,6);
	cout<<"三角形面积为:area3="<<tri3->area()<<endl;
	delete tri3;
	cout<<endl;
	Tri * tri4;
	tri4=new Tri(10,10,25);
	cout<<"三角形面积为:area4="<<tri4->area()<<endl;
	delete tri4;
	cout<<endl;
	Tri tri5(tri2);
	cout<<"使用拷贝构造函数调用输出的三角形面积为:area5="<<tri5.area()<<endl;
	return 0;
}
3、运行结果:

image-20220910132659804

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值