项目1-三角形类的构造函数

【项目1-三角形类的构造函数】

  设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化,可以由下面的类声明开始,需要自己实现相关的成员函数,以及增加要求的构造函数。

  1. #include<iostream>  
  2. #include<Cmath>  
  3. using namespace std;  
  4. class Triangle  
  5. {  
  6. public:  
  7.     void setABC(double x, double y, double z);//置三边的值,注意要能成三角形  
  8.     void getABC(double *x, double *y, double *z);//取三边的值  
  9.     double perimeter(void);//计算三角形的周长  
  10.     double area(void);//计算并返回三角形的面积  
  11. private:  
  12.     double a,b,c; //三边为私有成员数据  
  13. };  
  14. int main()  
  15. {  
  16.     Triangle tri1;  //定义三角形类的一个实例(对象)  
  17.     tri1.setABC(4,5,6); //为三边置初值  
  18.     double x,y,z;  
  19.     tri1.getABC (&x,&y,&z);   //将三边的值为x,y,z赋值  
  20.     cout<<"三条边为:"<<x<<'\t'<<y<<'\t'<<z<<endl;  
  21.     cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;  
  22.     return 0;  
  23. }  
  24. //请在下面定义Triangle类中的各个成员函数  
  25. void Triangle::setABC(double x, double y, double z)  
  26. {  
  27.     a = x;  
  28.     b = y;  
  29.     c = z;  
  30. }  
  31. void Triangle::getABC(double *x, double *y, double *z)  
  32. {  
  33.     //x = &a;  
  34.     //y = &b;  
  35.     //z = &c;  
  36.     *x = a;  
  37.     *y = b;  
  38.     *z = c;  
  39.   
  40. }  
  41. double Triangle::perimeter()  
  42. {  
  43.     return (a + b + c);  
  44. }  
  45. double Triangle::area()  
  46. {  
  47.     double p = (a + b + c) / 2;  
  48.     double s = sqrt(p * (p - a) * (p - b) * (p - c));  
  49.     return s;  
  50. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我无法提供完整的代码。但我可以给你一些思路: ```cpp #include <iostream> #include <cmath> using namespace std; class Circle { private: int x, y; // 圆心坐标 int r; // 半径 public: Circle() { // 缺省构造函数 x = y = r = 0; } Circle(int x, int y, int r) { // 参数的构造函数 this->x = x; this->y = y; this->r = r; } double GetArea() { // 计算圆的面积 return M_PI * r * r; } void Show() { // 显示圆的基本信息 cout << "圆心坐标:(" << x << ", " << y << ")" << endl; cout << "半径:" << r << endl; cout << "直径:" << 2 * r << endl; cout << "周长:" << 2 * M_PI * r << endl; cout << "面积:" << GetArea() << endl; } void Set(int x, int y, int r) { // 修改圆的基本信息 this->x = x; this->y = y; this->r = r; } }; class Rectangle { private: int x1, y1; // 左上角顶点坐标 int x2, y2; // 右下角顶点坐标 public: Rectangle() { // 缺省构造函数 x1 = y1 = x2 = y2 = 0; } Rectangle(int x1, int y1, int x2, int y2) { // 参数的构造函数 this->x1 = x1; this->y1 = y1; this->x2 = x2; this->y2 = y2; } double GetArea() { // 计算矩形的面积 return abs(x2 - x1) * abs(y2 - y1); } void Show() { // 显示矩形的基本信息 cout << "左上角顶点坐标:(" << x1 << ", " << y1 << ")" << endl; cout << "右下角顶点坐标:(" << x2 << ", " << y2 << ")" << endl; cout << "长:" << abs(x2 - x1) << endl; cout << "宽:" << abs(y2 - y1) << endl; cout << "面积:" << GetArea() << endl; } void Set(int x1, int y1, int x2, int y2) { // 修改矩形的基本信息 this->x1 = x1; this->y1 = y1; this->x2 = x2; this->y2 = y2; } }; class Triangle { private: int x1, y1; // 第一个顶点坐标 int x2, y2; // 第二个顶点坐标 int x3, y3; // 第三个顶点坐标 public: Triangle() { // 缺省构造函数 x1 = y1 = x2 = y2 = x3 = y3 = 0; } Triangle(int x1, int y1, int x2, int y2, int x3, int y3) { // 参数的构造函数 // 判断三个顶点是否能组成一个三角形 if ((x1 - x2) * (y1 - y3) != (x1 - x3) * (y1 - y2)) { cout << "输入的三角形顶点不合法!" << endl; exit(0); } this->x1 = x1; this->y1 = y1; this->x2 = x2; this->y2 = y2; this->x3 = x3; this->y3 = y3; } double GetArea() { // 计算三角形的面积 double a = sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2)); double b = sqrt(pow(x1 - x3, 2) + pow(y1 - y3, 2)); double c = sqrt(pow(x2 - x3, 2) + pow(y2 - y3, 2)); double p = (a + b + c) / 2; return sqrt(p * (p - a) * (p - b) * (p - c)); } void Show() { // 显示三角形的基本信息 cout << "第一个顶点坐标:(" << x1 << ", " << y1 << ")" << endl; cout << "第二个顶点坐标:(" << x2 << ", " << y2 << ")" << endl; cout << "第三个顶点坐标:(" << x3 << ", " << y3 << ")" << endl; cout << "面积:" << GetArea() << endl; } void Set(int x1, int y1, int x2, int y2, int x3, int y3) { // 修改三角形的基本信息 // 判断三个顶点是否能组成一个三角形 if ((x1 - x2) * (y1 - y3) != (x1 - x3) * (y1 - y2)) { cout << "输入的三角形顶点不合法!" << endl; exit(0); } this->x1 = x1; this->y1 = y1; this->x2 = x2; this->y2 = y2; this->x3 = x3; this->y3 = y3; } }; int main() { Circle c1(20, 30, 5); c1.Show(); c1.Set(-20, 40, 30); c1.Show(); Rectangle r1(20, 50, 40, 5); r1.Show(); r1.Set(-9, 10, 43, -8); r1.Show(); Triangle t1(20, 30, 40, 50, 40, 20); t1.Show(); t1.Set(10, 10, 50, 10, 35, 10); t1.Show(); return 0; } ``` 这是一个简单的面向对象的实现,包括三个:Circle、Rectangle、Triangle,每个中都有三个私有属性和公有函数(构造函数、GetArea()、Show()、Set(形参)),还有一个 main 函数用于测试的功能。 注意:在 Triangle 中,判断三个顶点是否能组成一个三角形的公式为:(x1 - x2) * (y1 - y3) != (x1 - x3) * (y1 - y2)。如果成立,则可以组成一个三角形;否则不行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值