write the missing code in the int main for (( template <typename T> )) then run
ID: 3868869 • Letter: W
Question
write the missing code in the int main for (( template <typename T> )) then run it and display it in C++
#include "stdafx.h"
#include <iostream>
#define PI 3.1412
using namespace std;
// base class
class figure
{ protected:
int side;
int height;
public:
void set_side(int s)
{
side = s;
}
int get_side()
{
return side;
} void set_height(int h)
{
height = h;
}
int get_height() {
return height;
} virtual double compute_area() = 0; virtual double compute_perimeter() = 0; };
class circle : public figure
{
public:
double compute_area()
{
return (PI*pow(side, 2));
} double compute_perimeter()
{
return (2 * PI*side);
}
}; class triangle : public figure
{
public:
double compute_area() {
double height = sqrt(3)*side / 2; return (side * height) / 2;
} double compute_perimeter()
{
return (3 * (side));
}
}; class square : public figure
{
public:
double compute_area()
{
return (pow(side, 2));
} double compute_perimeter()
{
return (4 * (side));
}
};
class cylinder : public circle
{
public:
double compute_volume()
{
return (height*compute_area());
} double compute_surface_area()
{
return (height*compute_perimeter());
}
}; class prism : public triangle
{
public:
double compute_volume() {
return (height*compute_area());
} double compute_surface_area()
{
return (height*compute_perimeter());
}
};
class cube : public square
{
public:
double compute_volume()
{
return (height*compute_area());
} double compute_surface_area() {
return (height*compute_perimeter());
}
};
template <typename T> class solid : public T
{
public:
double compute_volume()
{
return (height*compute_area());
}
double compute_surface_area()
{
return (height*compute_perimeter() + 2 * compute_area());
}
};
template <typename T>
class regular_solid : public solid<T>
{
public:
double compute_volume()
{
return (height*compute_area() / 3);
}
double compute_surface_area()
{
return (height*compute_perimeter() / 2 + compute_area());
}
};
int main(void) {
circle cir;
triangle tri;
square sqr;
cir.set_side(1);
// print the area and perimeter of the object cout << "Area of Circle: " << cir.compute_area() << endl;
cout << "Circumference of Circle: " << cir.compute_perimeter() << endl << endl;
tri.set_side(5);
// print the area and perimeter of the object
cout << "Area of Triangle: " << tri.compute_area() << endl;
cout << "Perimeter of Triangle: " << tri.compute_perimeter() << endl << endl;
sqr.set_side(7);
// print the area and perimeter of the object cout << "Area of Square: " << sqr.compute_area() << endl;
cout << "Perimeter of Square: " << sqr.compute_perimeter() << endl << endl;
solid<circle> cyl;
cyl.set_side(1);
cyl.set_height(2);
// print the volume of the object
cout << "Volume of Cylinder: " << cyl.compute_volume() << endl;
cout << "Surface Area of Cylinder: " << cyl.compute_surface_area() << endl << endl;
solid<triangle> pri;
pri.set_side(5);
pri.set_height(6);
// print the volume of the object
cout << "Volume of Prism: " << pri.compute_volume() << endl;
cout << "Surface Area of Prism: " << pri.compute_surface_area() << endl << endl;
solid<square> cube;
cube.set_side(3);
cube.set_height(4);
// print the volume of the object
cout << "Volume of Cube: " << cube.compute_volume() << endl;
cout << "Surface Area of Cube: " << cube.compute_surface_area() << endl << endl;
return 0;
}
Explanation / Answer
#include "stdafx.h"
#include <iostream>
#define PI 3.1412
using namespace std;
// base class
class figure
{ protected:
int side;
int height;
public:
void set_side(int s)
{
side = s;
}
int get_side()
{
return side;
} void set_height(int h)
{
height = h;
}
int get_height() {
return height;
} virtual double compute_area() = 0; virtual double compute_perimeter() = 0; };
class circle : public figure
{
public:
double compute_area()
{
return (PI*pow(side, 2));
} double compute_perimeter()
{
return (2 * PI*side);
}
}; class triangle : public figure
{
public:
double compute_area() {
double height = sqrt(3)*side / 2; return (side * height) / 2;
} double compute_perimeter()
{
return (3 * (side));
}
}; class square : public figure
{
public:
double compute_area()
{
return (pow(side, 2));
} double compute_perimeter()
{
return (4 * (side));
}
};
class cylinder : public circle
{
public:
double compute_volume()
{
return (height*compute_area());
} double compute_surface_area()
{
return (height*compute_perimeter());
}
}; class prism : public triangle
{
public:
double compute_volume() {
return (height*compute_area());
} double compute_surface_area()
{
return (height*compute_perimeter());
}
};
class cube : public square
{
public:
double compute_volume()
{
return (height*compute_area());
} double compute_surface_area() {
return (height*compute_perimeter());
}
};
template <typename T> class solid : public T
{
public:
double compute_volume()
{
return (height*compute_area());
}
double compute_surface_area()
{
return (height*compute_perimeter() + 2 * compute_area());
}
};
template <typename T>
class regular_solid : public solid<T>
{
public:
double compute_volume()
{
return (height*compute_area() / 3);
}
double compute_surface_area()
{
return (height*compute_perimeter() / 2 + compute_area());
}
};
int main(void) {
circle cir;
triangle tri;
square sqr;
cir.set_side(1);
// print the area and perimeter of the object cout << "Area of Circle: " << cir.compute_area() << endl;
cout << "Circumference of Circle: " << cir.compute_perimeter() << endl << endl;
tri.set_side(5);
// print the area and perimeter of the object
cout << "Area of Triangle: " << tri.compute_area() << endl;
cout << "Perimeter of Triangle: " << tri.compute_perimeter() << endl << endl;
sqr.set_side(7);
// print the area and perimeter of the object cout << "Area of Square: " << sqr.compute_area() << endl;
cout << "Perimeter of Square: " << sqr.compute_perimeter() << endl << endl;
solid<circle> cyl;
cyl.set_side(1);
cyl.set_height(2);
// print the volume of the object
cout << "Volume of Cylinder: " << cyl.compute_volume() << endl;
cout << "Surface Area of Cylinder: " << cyl.compute_surface_area() << endl << endl;
solid<triangle> pri;
pri.set_side(5);
pri.set_height(6);
// print the volume of the object
cout << "Volume of Prism: " << pri.compute_volume() << endl;
cout << "Surface Area of Prism: " << pri.compute_surface_area() << endl << endl;
solid<square> cube;
cube.set_side(3);
cube.set_height(4);
// print the volume of the object
cout << "Volume of Cube: " << cube.compute_volume() << endl;
cout << "Surface Area of Cube: " << cube.compute_surface_area() << endl << endl;
return 0;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.