#include <iostream>
#include <cstdlib>
#include <Cmath>
using namespace std;
class Triangle
{
public:
Triangle(double x=1, double y=1, double z=1)//(1)使用带参数构造函数
{
setABC(x,y,z);
}
Triangle(const Triangle &t) //使用复制构造函数,能用一个已有的三角形对象,复制出新的三角形对象
{
setABC(t.a,t.b,t.c);
}
void setABC(double x, double y, double z); //置三边的值,注意要能成三角形
double perimeter(void); //计算三角形的周长
double area(void); //计算并返回三角形的面积
bool IsTriangle(double a, double b, double c); //判断三个边长是否能构成三角形
void showMessage(void); //显示三角形的边长,周长和面积
private:
double a,b,c; //三边为私有成员数据
};
int main()
{
double a,b,c; //定义三个边长的值
/*
cout<<"请输入三条边的边长:"<<endl;
cin>>a>>b>>c;
if (IsTriangle(a,b,c))
cout<<"能构成三角形\n";
else
cout<<"不能构成三角形\n";
*/
Triangle Tri2; //定义边长为1 1 1的三角形类实例
Tri2.showMessage();
Triangle Tri1(4.1,5.0,6); //定义三角形类的一个实例(对象)
Tri1.showMessage();
Tri1.setABC(10,5,6); //为三边置初值
Tri1.showMessage();
Triangle Tri3(Tri1); //调用复制构造函数
Tri3.showMessage();
return 0;
}
//请在下面定义Triangle类中的各个成员函数
void Triangle::setABC(double x, double y, double z)
{
if(IsTriangle(x,y,z))
{
a=x;
b=y;
c=z;
}
else
{
cout<<"不能构成三角形"<<endl;
exit(0); //直接退出程序的执行
}
}
double Triangle::perimeter(void)
{
return a+b+c;
}
/*
海伦公式计算三角形的面积。
p=(边长1+边长2+边长3)/2
s=sqrt(p*(p-a)*(p-b)*(p-c))
*/
double Triangle::area(void)
{
double p=(a+b+c)/2;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
/*
判断三条边是否能构成三角形
*/
bool Triangle::IsTriangle(double a,double b,double c)
{
bool result;
//对输入的边长值进行判断,边长如果小于等于0,则不能构成三角形.
if (a <=0 || b <=0 || c<=0)
{
cout<<"三角形的边长不能小于等于0."<<endl;
cout<<a<<","<<b<<","<<c<<endl;
result = false;
return result;
}
if((a+b)>c&&(a+c>b)&&(b+c)>a)
{
result = true;
cout<<"能构成三角形\n"<<endl;
if(a==b&&b==c)
{
cout<<"是等边三角形\n"<<endl;
}
else if(a==b||a==c||b==c)
{
cout<<"是等腰三角形\n"<<endl;
}
else
cout<<"是一般三角形\n"<<endl;
}
else
{
result = false;
cout<<"不能构成三角形\n"<<a<<","<<b<<","<<c<<endl;
}
return result;
}
void Triangle::showMessage(void)
{
cout<<"三角形的三边长分别为:"<<a<<' '<<b<<' '<<c<<endl;
cout<<"该三角形的周长为"<<perimeter()<<",面积为"<<area()<<endl<<endl;
}
#include <cstdlib>
#include <Cmath>
using namespace std;
class Triangle
{
public:
Triangle(double x=1, double y=1, double z=1)//(1)使用带参数构造函数
{
setABC(x,y,z);
}
Triangle(const Triangle &t) //使用复制构造函数,能用一个已有的三角形对象,复制出新的三角形对象
{
setABC(t.a,t.b,t.c);
}
void setABC(double x, double y, double z); //置三边的值,注意要能成三角形
double perimeter(void); //计算三角形的周长
double area(void); //计算并返回三角形的面积
bool IsTriangle(double a, double b, double c); //判断三个边长是否能构成三角形
void showMessage(void); //显示三角形的边长,周长和面积
private:
double a,b,c; //三边为私有成员数据
};
int main()
{
double a,b,c; //定义三个边长的值
/*
cout<<"请输入三条边的边长:"<<endl;
cin>>a>>b>>c;
if (IsTriangle(a,b,c))
cout<<"能构成三角形\n";
else
cout<<"不能构成三角形\n";
*/
Triangle Tri2; //定义边长为1 1 1的三角形类实例
Tri2.showMessage();
Triangle Tri1(4.1,5.0,6); //定义三角形类的一个实例(对象)
Tri1.showMessage();
Tri1.setABC(10,5,6); //为三边置初值
Tri1.showMessage();
Triangle Tri3(Tri1); //调用复制构造函数
Tri3.showMessage();
return 0;
}
//请在下面定义Triangle类中的各个成员函数
void Triangle::setABC(double x, double y, double z)
{
if(IsTriangle(x,y,z))
{
a=x;
b=y;
c=z;
}
else
{
cout<<"不能构成三角形"<<endl;
exit(0); //直接退出程序的执行
}
}
double Triangle::perimeter(void)
{
return a+b+c;
}
/*
海伦公式计算三角形的面积。
p=(边长1+边长2+边长3)/2
s=sqrt(p*(p-a)*(p-b)*(p-c))
*/
double Triangle::area(void)
{
double p=(a+b+c)/2;
return sqrt(p*(p-a)*(p-b)*(p-c));
}
/*
判断三条边是否能构成三角形
*/
bool Triangle::IsTriangle(double a,double b,double c)
{
bool result;
//对输入的边长值进行判断,边长如果小于等于0,则不能构成三角形.
if (a <=0 || b <=0 || c<=0)
{
cout<<"三角形的边长不能小于等于0."<<endl;
cout<<a<<","<<b<<","<<c<<endl;
result = false;
return result;
}
if((a+b)>c&&(a+c>b)&&(b+c)>a)
{
result = true;
cout<<"能构成三角形\n"<<endl;
if(a==b&&b==c)
{
cout<<"是等边三角形\n"<<endl;
}
else if(a==b||a==c||b==c)
{
cout<<"是等腰三角形\n"<<endl;
}
else
cout<<"是一般三角形\n"<<endl;
}
else
{
result = false;
cout<<"不能构成三角形\n"<<a<<","<<b<<","<<c<<endl;
}
return result;
}
void Triangle::showMessage(void)
{
cout<<"三角形的三边长分别为:"<<a<<' '<<b<<' '<<c<<endl;
cout<<"该三角形的周长为"<<perimeter()<<",面积为"<<area()<<endl<<endl;
}