第十三周 任务四

╰+攻爆jí腚メ 2022-06-12 09:47 337阅读 0赞
  1. /* (程序头部注释开始)
  2. * 程序的版权和版本声明部分
  3. * Copyright (c) 2012, 烟台大学计算机学院学生
  4. * All rights reserved.
  5. * 文件名称: 抽象类
  6. * 作 者: 薛广晨
  7. * 完成日期: 2012 年 5 月 11 日
  8. * 版 本 号: x1.0
  9. * 对任务及求解方法的描述部分
  10. * 输入描述: 使用抽象类
  11. * 问题描述: 【任务4】设计一个抽象类CSolid,含有两个求表面积及体积的纯虚函数。
  12. 设计个派生类CCube、CBall、CCylinder,分别表示正方体、球体及圆柱体。
  13. 在main()函数中,定义基类的指针p(CSolid *p;),利用p指针,输出正方体、球体及圆柱体对象的表面积及体积。
  14. * 程序输出: ......
  15. * 程序头部的注释结束
  16. */
  17. #include <iostream>
  18. using namespace std;
  19. class CSolid
  20. {
  21. public:
  22. virtual double area() const = 0;
  23. virtual double volume() const = 0;
  24. };
  25. class CCube:public CSolid
  26. {
  27. public:
  28. CCube(double side);
  29. virtual double area() const;
  30. virtual double volume() const;
  31. private:
  32. double side;
  33. };
  34. CCube::CCube(double side)
  35. {
  36. this->side = side;
  37. }
  38. double CCube::area() const
  39. {
  40. return 6 * side * side;
  41. }
  42. double CCube::volume() const
  43. {
  44. return side * side * side;
  45. }
  46. class CBall:public CSolid
  47. {
  48. public:
  49. CBall(double radii);
  50. virtual double area() const;
  51. virtual double volume() const;
  52. private:
  53. double radii;
  54. };
  55. CBall::CBall(double radii)
  56. {
  57. this->radii = radii;
  58. }
  59. double CBall::area() const
  60. {
  61. return 4 * 3.14159 * radii * radii;
  62. }
  63. double CBall::volume() const
  64. {
  65. return radii * radii * radii * 3 / 4;
  66. }
  67. class CCylinder:public CSolid
  68. {
  69. public:
  70. CCylinder(double radii, double height);
  71. virtual double area() const;
  72. virtual double volume() const;
  73. private:
  74. double radii;
  75. double height;
  76. };
  77. CCylinder::CCylinder(double radii, double height)
  78. {
  79. this->radii = radii;
  80. this->height = height;
  81. }
  82. double CCylinder::area() const
  83. {
  84. return (2 * 3.14159 * radii * radii + 3.14159 * 2 * radii * height);
  85. }
  86. double CCylinder::volume() const
  87. {
  88. return 3.14159 * radii * radii * height;
  89. }
  90. int main()
  91. {
  92. CCube ccube(2.1);
  93. CBall cball(3.1);
  94. CCylinder ccylinder(1.2, 3.5);
  95. CSolid *p;
  96. p = &ccube;
  97. cout << "正方体的表面积为:" << p->area() << endl;
  98. cout << "正方体的体积为:" << p->volume() << endl;
  99. cout << endl;
  100. p = &cball;
  101. cout << "球的表面积为:" << p->area() << endl;
  102. cout << "球的体积为:" << p->volume() << endl;
  103. cout << endl;
  104. p = &ccylinder;
  105. cout << "圆柱体的表面积为:" << p->area() << endl;
  106. cout << "圆柱体的体积为:" << p->volume() << endl;
  107. cout << endl;
  108. system("pause");
  109. return 0;
  110. }

1336733049_4417.JPG

发表评论

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

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

相关阅读