#include<iostream>
using namespace std;
class basic {
public:
virtual double superficial_area() = 0;
virtual double volume() = 0;
~basic()
{}
};
class cube :public basic
{
private:
double length;
public:
cube(double a) :length(a)
{}
double superficial_area()
{
return(6 * length * length);
}
double volume()
{
return(length * length * length);
}
~cube()
{}
};
class cylinder :public basic
{
private:
double radius;
double high;
public:
cylinder(double a, double b) :radius(a), high(b)
{}
double superficial_area()
{
return ((2 * 3.1415 * radius * radius) + (2 * 3.1415 * radius * high));