forked from s444409/POB_2019
57 lines
1.1 KiB
C++
57 lines
1.1 KiB
C++
#include <iostream>
|
|
#include <string>
|
|
#include <cmath>
|
|
#include <vector>
|
|
using namespace std;
|
|
|
|
class Geometry {
|
|
public:
|
|
virtual string type()=0;
|
|
virtual float volume()=0;
|
|
};
|
|
|
|
class Box : public Geometry {
|
|
private:
|
|
int dimX, dimY, dimZ;
|
|
public:
|
|
Box(int _dimX, int _dimY, int _dimZ){
|
|
dimX=_dimX;
|
|
dimY=_dimY;
|
|
dimZ=_dimZ;
|
|
}
|
|
virtual string type(){
|
|
return "Box";
|
|
}
|
|
virtual float volume(){
|
|
return(dimX*dimZ*dimY);
|
|
}
|
|
};
|
|
|
|
class Ball : public Geometry {
|
|
private:
|
|
int radius;
|
|
public:
|
|
Ball(int _radius){
|
|
radius=_radius;
|
|
}
|
|
virtual string type(){
|
|
return "Ball";
|
|
}
|
|
virtual float volume(){
|
|
return (float)4/3*M_PI*pow(radius, 3);
|
|
}
|
|
};
|
|
|
|
int main()
|
|
{
|
|
vector<Geometry*> geometries = {
|
|
(Geometry*)new Box(10, 2, 3),
|
|
(Geometry*)new Box(3, 3, 1),
|
|
(Geometry*)new Ball(5),
|
|
(Geometry*)new Ball(1)
|
|
};
|
|
for (Geometry *f : geometries) {
|
|
cout << f->type() << ": volume = " << f->volume() << "\n";
|
|
}
|
|
return 0;
|
|
} |