Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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;

}