6、封装案例练习:点和圆的关系.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. //案例练习2:点和圆的关系
  2. //设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系
  3. //点和圆的关系判断
  4. //点到圆心的距离 == 半径 点在圆上
  5. //点到愿心的距离 > 半径 点在圆外
  6. //点到圆心的距离 < 半径 点在圆内
  7. //点到圆心的距离???
  8. #include <iostream>
  9. #include "point.h"
  10. #include "circle.h"
  11. //设计一个点类
  12. //class Point
  13. //{
  14. //public:
  15. // //设置x
  16. // void setX(int x)
  17. // {
  18. // m_X = x;
  19. // }
  20. // //获取x
  21. // int getX()
  22. // {
  23. // return m_X;
  24. // }
  25. // //设置y
  26. // void setY(int y)
  27. // {
  28. // m_Y = y;
  29. // }
  30. // //获取y
  31. // int getY()
  32. // {
  33. // return m_Y;
  34. // }
  35. //
  36. //private:
  37. // int m_X;
  38. // int m_Y;
  39. //
  40. //};
  41. //设计一个圆类
  42. //class Circle
  43. //{
  44. //public:
  45. // //设置半径
  46. // void setR(int r)
  47. // {
  48. // m_R = r;
  49. // }
  50. // //获取半径
  51. // int getR()
  52. // {
  53. // return m_R;
  54. // }
  55. // //设置圆心
  56. // void setCenter(Point center)
  57. // {
  58. // m_Center = center;
  59. // }
  60. // //获取圆心
  61. // Point getCenter()
  62. // {
  63. // return m_Center;
  64. // }
  65. //private:
  66. // int m_R; //半径
  67. //
  68. //
  69. // //在类中可以让另一个类作为本类中的成员
  70. // Point m_Center; //圆心
  71. //
  72. //};
  73. //判断点和圆的关系
  74. void isInCircle(Circle &c,Point &p)
  75. {
  76. //计算两点之间距离 平方
  77. int distance =
  78. (c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) +
  79. (c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());
  80. //计算半径的平方
  81. int rDistance = c.getR() * c.getR();
  82. //判断关系
  83. if (distance == rDistance)
  84. {
  85. std::cout << "点在圆上" << std::endl;
  86. }
  87. else if (distance > rDistance)
  88. {
  89. std::cout << "点在圆外" << std::endl;
  90. }
  91. else
  92. {
  93. std::cout << "点在圆内" << std::endl;
  94. }
  95. }
  96. int main()
  97. {
  98. //创建圆
  99. Circle c;
  100. c.setR(10);
  101. Point center;
  102. center.setX(10);
  103. center.setY(0);
  104. c.setCenter(center);
  105. //创建点
  106. Point p;
  107. p.setX(10);
  108. p.setY(11);
  109. //判断关系
  110. isInCircle(c, p);
  111. system("pause");
  112. return 0;
  113. }