写一个程序,内容为输入三个点的坐标,计算以这三个点为顶点的三角形面积,并判断该三角形类型(等边⼀等腰

2025-04-14 02:45:28
推荐回答(2个)
回答1:

//点的坐标最好用结构类型表示
typedef struct{
int x;
int y;
}Point;
//初始化点的坐标
void initPoint(Point &p,int px,int py) //符号&为C++中的引用
{
p.x=px;
p.y=py;
}
//也可以定义一个构造函数
void setPoint(Point &p)
{
printf("Input x of the point:");
scanf("%d",&p.x);
printf("Input y of the point:");
scanf("%d",&p.y);
}
//获取x的值
int getX(Point &p)
{
return p.x;
}
//获取y的值
int getY(Point &p)
{
return p.y;
}
//计算两个点的长度
float getLenth(Point &p1,Point &p2)
{
float lenth;
lenth=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
return lenth;
}
//计算三角形面积
float getArea(int lenth1,int lenth2,int lenth3)
{
unsigned tsin,tcos; //正弦、余弦的符号未知,故用unsigned定义
float area;
//使用正余弦定理求三角形面积
tcos=(lenth1*lenth1+lenth3*lenth3-lenth2*lenth2)/(2*lenth1*lenth3);
tsin=sqrt(1-tcos*tcos);
area=lenth1*lenth3*tsin/2;
return area;
}
大致需要的函数就是这些,你在根据需要做一些修改就OK了!若有不明白再问

回答2:

说一下思路吧。
有三个顶点可以计算出三个边长,分别设为a,b,c
面积=sqrt((a + b + c) * (a + b - c) * (a + c - b) * (b + c - a)) * 0.25
是不是等边/等腰判断一下三条边的长度关系就知道了