Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //pastebin.com/u/thewhitefang
- // Tutorial 10 Q3
- //the value they calculated in the solution is wrong
- #include <iostream>
- #include <string>
- #define PI 3.142
- using namespace std;
- //pure virtual class
- class IGeometricCalc
- {
- public:
- virtual void SetGeometricAttributes(float inSide1, float inSide2, float inRadius) = 0;
- virtual float CalculateSurfaceArea() = 0;
- virtual float CalculateVolume() = 0;
- };
- //implementation class
- class CubeGeometricCalc :public IGeometricCalc {
- private:
- float m_Side;
- float m_Height;
- float m_Radius;
- float m_SurfaceArea;
- float m_Volume;
- public:
- void SetGeometricAttributes(float inSide1, float inSide2, float inRadius){
- m_Side = inSide1;
- m_Height = inSide2;
- m_Radius = inRadius;
- }
- float CalculateSurfaceArea()
- {
- /*m_SurfaceArea = m_Side*m_Height;*/
- return(6 * m_Side*m_Height);
- };
- float CalculateVolume()
- {
- /*m_Volume = m_Side*m_Side*m_Height;*/
- return(m_Side*m_Side*m_Height);
- };
- };
- class SphereGeometricCalc :public IGeometricCalc {
- private:
- float m_Side;
- float m_Height;
- float m_Radius;
- float m_SurfaceArea;
- float m_Volume;
- public:
- void SetGeometricAttributes(float inSide1, float inSide2, float inRadius){
- m_Side = inSide1;
- m_Height = inSide2;
- m_Radius = inRadius;
- }
- float CalculateSurfaceArea()
- {
- /*m_SurfaceArea = 4*PI*m_Side*m_Side;*/
- return(4.0 * PI*m_Radius*m_Radius);
- };
- float CalculateVolume()
- {
- /*m_Volume = (4.0/3.0)*PI*m_Radius*m_Radius*m_Radius;*/
- return((4.0 / 3.0)*PI*m_Radius*m_Radius*m_Radius);
- };
- };
- class CylinderGeometricCalc :public IGeometricCalc {
- private:
- float m_Side;
- float m_Height;
- float m_Radius;
- float m_SurfaceArea;
- float m_Volume;
- public:
- void SetGeometricAttributes(float inSide1, float inSide2, float inRadius){
- m_Side = inSide1;
- m_Height = inSide2;
- m_Radius = inRadius;
- }
- float CalculateSurfaceArea()
- {
- /*m_SurfaceArea = (2*PI*m_Radius*m_Height)+(2*PI*m_Radius*m_Radius);*/
- return((2 * PI*m_Radius*m_Height) + (2 * PI*m_Radius*m_Radius));
- };
- float CalculateVolume()
- {
- /*m_Volume = PI*m_Radius*m_Radius*m_Height;*/
- return(PI*m_Radius*m_Radius*m_Height);
- };
- };
- int main()
- {
- float Area, Volume = 0;
- float s, h, r = 0;
- string name = " ";
- cout << "Enter Calculation type: " << endl;
- getline(cin, name);
- if (name == "cu"||name == "Cu" ){
- CubeGeometricCalc Cube;
- cout << "Enter side(cm): ";
- cin >> s;
- cout << "Enter height(cm): ";
- cin >> h;
- cout << "Enter radius(cm): ";
- cin >> r;
- Cube.SetGeometricAttributes(s, h, r);
- Area = Cube.CalculateSurfaceArea();
- Volume = Cube.CalculateVolume();
- }
- else if (name == "sp" || name == "Sp"){
- SphereGeometricCalc Sphere;
- cout << "Enter side(cm): ";
- cin >> s;
- cout << "Enter height(cm): ";
- cin >> h;
- cout << "Enter radius(cm): ";
- cin >> r;
- Sphere.SetGeometricAttributes(s, h, r);
- Area = Sphere.CalculateSurfaceArea();
- Volume = Sphere.CalculateVolume();
- }
- else if (name == "cy" || name == "Cy"){
- CylinderGeometricCalc Cylinder;
- cout << "Enter side(cm): ";
- cin >> s;
- cout << "Enter height(cm): ";
- cin >> h;
- cout << "Enter radius(cm): ";
- cin >> r;
- Cylinder.SetGeometricAttributes(s, h, r);
- Area = Cylinder.CalculateSurfaceArea();
- Volume = Cylinder.CalculateVolume();
- }
- else
- {
- cout << "Enter a valid number FFS";
- }
- cout << "Surface Area: " << Area << " cm^2" << endl;
- cout << "Volume: " << Volume << " cm^3" << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement