用C++ 定义一个三角形类(Triangle)。属性为三条边,计算周长和面积。

2024-12-04 12:02:53
推荐回答(3个)
回答(1):

提供一下思路,具体代码需要用到“两点间的距离公式”和“点到直线的距离公式”,这些方程很久没用了,忘了,所以就提供一下思想:

首先,c++基本数据类型中没有“边”这个东东,如果LZ一定要用“边”做属性的话那最好是定义一个“边类”,class Side{}; 然后用类的组合来定义三角形类。

边:
由两个端点确定,所以边中的成员要包含两端点的坐标,由于端点没有必要用到函数,所以为了节约,用个2*2的数组Point[2][2]来储存端点坐标即可
需要包含的函数:1.构造函数,传入4个浮点型数据,依次赋值给数组
2.拷贝构造函数,可能会用到
3.计算长度函数,返回浮点型,由先前提到的“两点间的距离公式”辅助
ps:构造函数中没有申请新的内存空间,析构函数可以不要

三角形:
由三个边类的实例作为成员;
包含的函数:1.构造函数,传入6个浮点型数据依次代表3顶点的两坐标,分别调用不同的两个点来构造边,并且把这些“边”依次赋值给三个“成员边”
2.拷贝构造函数,可能会用到
3.计算周长,这个很容易了,分别调用三个“成员边”的长度计算函数,把3个返回值加起来就搞定了
4.计算面积,这个需要用到“点到直线的距离公式”来辅助,任选取一条边做底边,1/2(底*高),搞定
ps:同边类,构造函数没有分配新的内存空间,所以可以不要析构函数

回答(2):

#include
#include
#include
using namespace std;
class Triangle{
int a,b,c;
public:
double Area(){
double s=(a+b+c)/2;
return sqrt(s*(s-a)*(s-b)*(s-c));

};
int Perimeter(){
return a+b+c;
}
void Input(){
cin>>a>>b>>c;
}
};
void main(){
Triangle t1;
t1.Input();
cout<}
自己写的 可运行

回答(3):

#include
#include //数学函数

using namespace std;

class Triangle
{
private: //三边为属性
double a;
double b;
double c;
public:
Triangle(double newA,double newB,double newC)
{
a=newA;
b=newB;
c=newC;
}
double OpPerimete() //计算周长
{
double perimete=a+b+c;
return perimete;
}

double OpArea() //计算面积
{
double p=(a+b+c)/2;
double area=sqrt(p*(p-a)*(p-b)*(p-c)); //海伦公式
return area;
}

};

void main()
{
double a,b,c;
cin>>a>>b>>c;
if(((a+b)>c)&&((a+c)>b)&&(b+c)>a) //能不能构成三角形
{
cout<<"It is't a Triangle"< }
else //能构成三角形就输出周长和面积
{
Triangle *t=new Triangle(a,b,c);
cout<<"Perimete="<OpPerimete()< cout<<"Area="<OpArea()< }
}