题目描述
题目描述
设计一个Point类,有两个私有的数据成员x和y,存储横坐标和纵坐标,并为该类定义各种构造函数。
再设计一个三角形类Triangle,该类有3个Point类的私有对象成员,分别代表三角形的三个顶点。
为该类定义各种构造函数。
将三角形类声明为Point类的友元类,在三角型类中定义一个成员函数double getArea(); ,用来求三角形的面积。
在主函数中创建三角形对象,计算并输出面积。
输入描述
输入三行,每行输入一个点的横坐标、纵坐标
输出描述
输出三角形的面积
提示
程序的开始部分(必要的头文件包含和using namespace std;)和main函数已经写好了,你只需要设计Point类和Triangle类。(只需要提交这部分代码)
解读
涉及友元相关内容
源代码
#include#includeusing namespace std;
class Point
{
friend class Triangle;
public:
Point() :x(0), y(0) {} //默认构造函数
Point(double x, double y) :x(x), y(y) {} //带参构造函数
Point(Point& p) //拷贝构造函数
{
x = p.x;
y = p.y;
}
~Point() {}; //析构函数
private:
double x, y;
};
class Triangle
{
public:
Triangle(Point a, Point b, Point c) //带参构造函数
{
p1 = a;
p2 = b;
p3 = c;
}
Triangle(Triangle& t) //拷贝构造函数
{
p1 = t.p1;
p2 = t.p2;
p3 = t.p3;
}
~Triangle() {}; //析构函数
double getArea(); //成员函数
private:
Point p1, p2, p3;
};
double Triangle::getArea()
{
double ab = sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y));
double ac = sqrt((p3.x - p1.x) * (p3.x - p1.x) + (p3.y - p1.y) * (p3.y - p1.y));
double bc = sqrt((p3.x - p2.x) * (p3.x - p2.x) + (p3.y - p2.y) * (p3.y - p2.y));
double p = (ab + bc + ac) / 2;
double s = sqrt(p * (p - ab) * (p - ac) * (p - bc));
return s;
}
int main()
{
double x, y;
cin >>x >>y;
Point a(x, y);
cin >>x >>y;
Point b(x, y);
cin >>x >>y;
Point c(x, y);
Triangle t(a, b, c);
cout<< t.getArea()<< endl;
return 0;
}
[点击并拖拽以移动]
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧