Advertisement
TheWhiteFang

Tutorial 10 Q3

Jan 12th, 2015
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.51 KB | None | 0 0
  1. //pastebin.com/u/thewhitefang
  2. // Tutorial 10 Q3
  3. //the value they calculated in the solution is wrong
  4.  
  5. #include <iostream>
  6. #include <string>
  7. #define PI 3.142
  8.  
  9. using namespace std;
  10.  
  11. //pure virtual class
  12. class IGeometricCalc
  13. {
  14. public:
  15.     virtual void SetGeometricAttributes(float inSide1, float inSide2, float inRadius) = 0;
  16.  
  17.     virtual float CalculateSurfaceArea() = 0;
  18.     virtual float CalculateVolume() = 0;
  19.  
  20. };
  21.  
  22. //implementation class
  23. class CubeGeometricCalc :public IGeometricCalc {
  24. private:
  25.     float m_Side;
  26.     float m_Height;
  27.     float m_Radius;
  28.     float m_SurfaceArea;
  29.     float m_Volume;
  30.  
  31. public:
  32.     void SetGeometricAttributes(float inSide1, float inSide2, float inRadius){
  33.  
  34.         m_Side = inSide1;
  35.         m_Height = inSide2;
  36.         m_Radius = inRadius;
  37.     }
  38.  
  39.     float CalculateSurfaceArea()
  40.     {
  41.         /*m_SurfaceArea = m_Side*m_Height;*/
  42.         return(6 * m_Side*m_Height);
  43.     };
  44.  
  45.     float CalculateVolume()
  46.     {
  47.         /*m_Volume = m_Side*m_Side*m_Height;*/
  48.         return(m_Side*m_Side*m_Height);
  49.     };
  50.  
  51. };
  52.  
  53. class SphereGeometricCalc :public IGeometricCalc {
  54. private:
  55.     float m_Side;
  56.     float m_Height;
  57.     float m_Radius;
  58.     float m_SurfaceArea;
  59.     float m_Volume;
  60.  
  61. public:
  62.     void SetGeometricAttributes(float inSide1, float inSide2, float inRadius){
  63.  
  64.         m_Side = inSide1;
  65.         m_Height = inSide2;
  66.         m_Radius = inRadius;
  67.     }
  68.  
  69.     float CalculateSurfaceArea()
  70.     {
  71.         /*m_SurfaceArea = 4*PI*m_Side*m_Side;*/
  72.         return(4.0 * PI*m_Radius*m_Radius);
  73.     };
  74.  
  75.     float CalculateVolume()
  76.     {
  77.         /*m_Volume = (4.0/3.0)*PI*m_Radius*m_Radius*m_Radius;*/
  78.         return((4.0 / 3.0)*PI*m_Radius*m_Radius*m_Radius);
  79.     };
  80.  
  81.  
  82. };
  83.  
  84. class CylinderGeometricCalc :public IGeometricCalc {
  85. private:
  86.     float m_Side;
  87.     float m_Height;
  88.     float m_Radius;
  89.     float m_SurfaceArea;
  90.     float m_Volume;
  91.  
  92. public:
  93.     void SetGeometricAttributes(float inSide1, float inSide2, float inRadius){
  94.  
  95.         m_Side = inSide1;
  96.         m_Height = inSide2;
  97.         m_Radius = inRadius;
  98.     }
  99.  
  100.     float CalculateSurfaceArea()
  101.     {
  102.         /*m_SurfaceArea = (2*PI*m_Radius*m_Height)+(2*PI*m_Radius*m_Radius);*/
  103.         return((2 * PI*m_Radius*m_Height) + (2 * PI*m_Radius*m_Radius));
  104.     };
  105.  
  106.     float CalculateVolume()
  107.     {
  108.         /*m_Volume = PI*m_Radius*m_Radius*m_Height;*/
  109.         return(PI*m_Radius*m_Radius*m_Height);
  110.     };
  111.  
  112.  
  113. };
  114.  
  115. int main()
  116. {
  117.  
  118.  
  119.  
  120.     float Area, Volume = 0;
  121.     float s, h, r = 0;
  122.     string name = " ";
  123.     cout << "Enter Calculation type: " << endl;
  124.     getline(cin, name);
  125.  
  126.     if (name == "cu"||name == "Cu" ){
  127.         CubeGeometricCalc Cube;
  128.  
  129.         cout << "Enter side(cm): ";
  130.         cin >> s;
  131.         cout << "Enter height(cm): ";
  132.         cin >> h;
  133.         cout << "Enter radius(cm): ";
  134.         cin >> r;
  135.  
  136.         Cube.SetGeometricAttributes(s, h, r);
  137.        
  138.         Area = Cube.CalculateSurfaceArea();
  139.         Volume = Cube.CalculateVolume();
  140.     }
  141.  
  142.     else if (name == "sp" || name == "Sp"){
  143.  
  144.     SphereGeometricCalc Sphere;
  145.  
  146.     cout << "Enter side(cm): ";
  147.     cin >> s;
  148.     cout << "Enter height(cm): ";
  149.     cin >> h;
  150.     cout << "Enter radius(cm): ";
  151.     cin >> r;
  152.  
  153.     Sphere.SetGeometricAttributes(s, h, r);
  154.  
  155.     Area = Sphere.CalculateSurfaceArea();
  156.     Volume = Sphere.CalculateVolume();
  157.     }
  158.  
  159.     else if (name == "cy" || name == "Cy"){
  160.         CylinderGeometricCalc Cylinder;
  161.  
  162.         cout << "Enter side(cm): ";
  163.         cin >> s;
  164.         cout << "Enter height(cm): ";
  165.         cin >> h;
  166.         cout << "Enter radius(cm): ";
  167.         cin >> r;
  168.  
  169.         Cylinder.SetGeometricAttributes(s, h, r);
  170.  
  171.         Area = Cylinder.CalculateSurfaceArea();
  172.         Volume = Cylinder.CalculateVolume();
  173.     }
  174.  
  175.     else
  176.     {
  177.         cout << "Enter a valid number FFS";
  178.     }
  179.  
  180.     cout << "Surface Area: " << Area << " cm^2" << endl;
  181.     cout << "Volume: " << Volume << " cm^3" << endl;
  182.  
  183.     return 0;
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement