第六周 任务五

た 入场券 2022-06-13 06:49 277阅读 0赞
  1. /*【任务5】将任务4的解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优点。
  2. 实验内容:设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。
  3. * 程序的版权和版本声明部分
  4. * Copyright (c) 2011, 烟台大学计算机学院学生
  5. * All rights reserved.
  6. * 文件名称: 三角形类
  7. * 作 者: 薛广晨
  8. * 完成日期: 2012 年 3 月 26 日
  9. * 版 本号: x1.0
  10. * 对任务及求解方法的描述部分
  11. * 输入描述:输入三角形的三个顶点(解决用一个项目多个文件的方式实现)
  12. * 程序头部的注释结束(此处也删除了斜杠)
  13. //头文件 CTriangle.h
  14. class CPoint
  15. {
  16. private:
  17. float x; // 横坐标
  18. float y; // 纵坐标
  19. public:
  20. CPoint(double xx = 0,double yy = 0) : x(xx), y(yy){};
  21. float Distance(CPoint p) const; // 两点之间的距离(一点是当前点,另一点为参数p)
  22. void input(); //以x,y 形式输入坐标点
  23. };
  24. class CTriangle
  25. {
  26. public:
  27. CTriangle(CPoint &X, CPoint &Y, CPoint &Z) : A(X), B(Y), C(Z){} //给出三点的构造函数
  28. void setTriangle(CPoint &X, CPoint &Y, CPoint &Z);//
  29. float perimeter(void);//计算三角形的周长
  30. float area(void);//计算并返回三角形的面积
  31. bool isRightTriangle(); //是否为直角三角形
  32. bool isIsoscelesTriangle(); //是否为等腰三角形
  33. private:
  34. CPoint A, B, C; //三顶点
  35. float a, b, c;//三条边
  36. };
  37. //成员函数文件 CTriangle.cpp
  38. #include<iostream>
  39. #include"cmath"
  40. #include"CTriangle.h"
  41. using namespace std;
  42. void CTriangle :: setTriangle(CPoint &X, CPoint &Y, CPoint &Z)
  43. {
  44. a = X.Distance(Y);
  45. b = Y.Distance(Z);
  46. c = X.Distance(Z);
  47. if(a + b > c && a + c > b && b + c > a)
  48. {
  49. A = X;
  50. B = Y;
  51. C = Z;
  52. }
  53. else
  54. {
  55. cout << "不能构成三角形,退出!" << endl;
  56. exit(1);
  57. }
  58. }
  59. float CTriangle :: perimeter(void)
  60. {
  61. return (a + b + c);
  62. }
  63. float CTriangle :: area(void)
  64. {
  65. float p;
  66. p = (a + b + c) / 2;
  67. return sqrt( p * (p - a) * (p - b) * (p - c) );
  68. }
  69. bool CTriangle :: isRightTriangle() //是否为直角三角形
  70. {
  71. if(a * a + b * b == c * c || a * a + c * c == b * b || c * c + b * b == a * a)
  72. {
  73. return true;
  74. }
  75. else
  76. {
  77. return false;
  78. }
  79. }
  80. bool CTriangle :: isIsoscelesTriangle() //是否为等腰三角形
  81. {
  82. if(a == b || a == c || b == c)
  83. {
  84. return true;
  85. }
  86. else
  87. {
  88. return false;
  89. }
  90. }
  91. void CPoint :: input() //以x,y 形式输入坐标点
  92. {
  93. char c1, c2, c3;
  94. cout << "请输入坐标(形式 (x,y))";
  95. while(1)
  96. {
  97. cin >> c1 >> x >> c2 >> y >> c3;
  98. if(c1 != '(' || c2 != ',' || c3 != ')')
  99. {
  100. cout << "请重新输入(形式 (x,y))";
  101. }
  102. else
  103. break;
  104. }
  105. }
  106. float CPoint :: Distance(CPoint p) const // 两点之间的距离(一点是当前点,另一点为参数p)
  107. {
  108. float d;
  109. d = sqrt((p.x - x) * (p.x - x) + (p.y - y) * (p.y - y));
  110. return d;
  111. }
  112. //主函数文件 main.cpp
  113. #include<iostream>
  114. #include"CTriangle.h"
  115. using namespace std;
  116. void main()
  117. {
  118. CPoint p1, p2, p3;
  119. p1.input();
  120. p2.input();
  121. p3.input();
  122. CTriangle c(p1, p2, p3);
  123. c.setTriangle(p1, p2, p3);
  124. cout << "三角形的周长是:" << c.perimeter() << endl;
  125. cout << "三角形的面积是" << c.area() << endl;
  126. cout << (c.isRightTriangle()?"是":"不是") << "直角三角形" <<endl;
  127. cout << (c.isIsoscelesTriangle()?"是":"不是") << "等腰三角形" <<endl;
  128. system("pause");
  129. }

1332757631_6915.JPG
上机感言: 一个项目用多文件方式实现,这样可以更容易修改和寻找错误

发表评论

表情:
评论列表 (有 0 条评论,277人围观)

还没有评论,来说两句吧...

相关阅读

    相关 任务

    /【任务5】将任务4的解决用一个项目多个文件的方式实现,其中两个类的声明放在一个.h文件中,每个类的成员函数分别放一个文件,main()函数用一个文件。体会这样安排的优

    相关 任务

    //【任务1】下面的程序存在编译错误。有两种方法可以修改,请给出这两种修改方案,在报告中说明你倾向于用哪一种?为什么?处理此类问题的原则是什么? /实验目的:

    相关 任务

    / 实验内容:设计一个三角形类,能够输入三角形的三个顶点,求出其面积、周长,并判断其是否为直角三角形和等腰三角形。 程序的版权和版本声明部分

    相关 任务

    /实验目的:设计平面坐标点类 实验内容:设计平面坐标点类,计算两点之间距离、到原点距离、关于坐标轴和原点的对称点等 程序的版权和版本声明部分

    相关 任务

    /实验目的:练习使用指针 实验内容:程序填空:按要求将缺少的代码填进去 程序的版权和版本声明部分 Copyright (c)

    相关 任务

    /【任务3】编写基于对象的程序,求5个长方柱的体积和表面积。长方柱类的数据成员包括长(length)、宽(width)、高(heigth)等。另外: (1)

    相关 任务

    /【任务2】C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对

    相关 任务

    /【任务1】设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化 特别要求:为全面体会构造函数的各种写法,本任务要求提交多个版本的程序,体现出你已经掌