Answer:
circleType.h
#ifndef circleType_H
#define circleType_H
class circleType
{
public:
void print();
void setRadius(double r);
//Function to set the radius.
//Postcondition: if (r >= 0) radius = r;
// otherwise radius = 0;
double getRadius();
//Function to return the radius.
//Postcondition: The value of radius is returned.
double area();
//Function to return the area of a circle.
//Postcondition: Area is calculated and returned.
double circumference();
//Function to return the circumference of a circle.
//Postcondition: Circumference is calculated and returned.
circleType(double r = 0);
//Constructor with a default parameter.
//Radius is set according to the parameter.
//The default value of the radius is 0.0;
//Postcondition: radius = r;
private:
double radius;
};
#endif
circleTypeImpl.cpp
#include <iostream>
#include "circleType.h"
using namespace std;
void circleType::print()
{
cout << "Radius = " << radius
<< ", area = " << area()
<< ", circumference = " << circumference();
}
void circleType::setRadius(double r)
{
if (r >= 0)
radius = r;
else
radius = 0;
}
double circleType::getRadius()
{
return radius;
}
double circleType::area()
{
return 3.1416 * radius * radius;
}
double circleType::circumference()
{
return 2 * 3.1416 * radius;
}
circleType::circleType(double r)
{
setRadius(r);
}
cylinderType.h
#ifndef cylinderType_H
#define cylinderType_H
#include "circleType.h"
class cylinderType: public circleType
{
public:
void print();
void setHeight(double);
double getHeight();
double volume();
double area();
//returns surface area
cylinderType(double = 0, double = 0);
private:
double height;
};
#endif
cylinderTypeImpl.cpp
#include <iostream>
#include "circleType.h"
#include "cylinderType.h"
using namespace std;
cylinderType::cylinderType(double r, double h)
: circleType(r)
{
setHeight(h);
}
void cylinderType::print()
{
cout << "Radius = " << getRadius()
<< ", height = " << height
<< ", surface area = " << area()
<< ", volume = " << volume();
}
void cylinderType::setHeight(double h)
{
if (h >= 0)
height = h;
else
height = 0;
}
double cylinderType::getHeight()
{
return height;
}
double cylinderType::area()
{
return 2 * 3.1416 * getRadius() * (getRadius() + height);
}
double cylinderType::volume()
{
return 3.1416 * getRadius() * getRadius() * height;
}
main.cpp
#include <iostream>
#include <iomanip>
using namespace std;
#include "cylinderType.h"
int main()
{
double radius,height;
double shippingCostPerLi,paintCost,shippingCost=0.0;
cout << fixed << showpoint;
cout << setprecision(2);
cout<<"Enter the radius :";
cin>>radius;
cout<<"Enter the Height of the cylinder :";
cin>>height;
cout<<"Enter the shipping cost per liter :$";
cin>>shippingCostPerLi;
//Creating an instance of CylinderType by passing the radius and height as arguments
cylinderType ct(radius,height);
double surfaceArea=ct.area();
double vol=ct.volume();
shippingCost+=vol*28.32*shippingCostPerLi;
char ch;
cout<<"Do you want the paint the container (y/n)?";
cin>>ch;
if(ch=='y' || ch=='Y')
{
cout<<"Enter the paint cost per sq foot :$";
cin>>paintCost;
shippingCost+=surfaceArea*paintCost;
}
cout<<"Total Shipping Cost :$"<<shippingCost<<endl;
return 0;
}