3차원 도형을 칠하는 데 필요한 페인트의 양을 계산하는 프로그램을 작성해보자!
위 문제를 아래와 같이 작성하였는데 원하는 실행결과가 안나옵니다.
함수를 더 추가하지 않고, getSurfaceArea()함수만을 이용하여 다음과 같은 결과물을 나오게 하려면 어떻게 해야하나요?
#include <iostream> #include <string> using namespace std; double PI = 3.14; class Shape { private: string name; public: Shape(string name) { cout << name << endl; } virtual double getSurfaceArea() = 0; }; class Sphere : public Shape { private: double radius; public: Sphere(double r, string n) : Shape(n),radius(r) {} double getSurfaceArea() { return 4 * radius * radius * PI; } }; class Cube :public Shape { private: double width; double height; double deep; public: Cube(double w, double d, double h,string n) : Shape(n),width(w), deep(d), height(h) {} double getSurfaceArea() { return 2 * (width * height + height * deep + width * deep); } }; class Cylinder :public Shape { private: double radius; double height; public: Cylinder(double r, double h,string n) : Shape(n),radius(r), height(h) {} double getSurfaceArea() { return radius*radius*PI*2+2*PI*radius*height; } }; int main() { Shape* fgr[3] = { new Sphere(3,"Shpere"), new Cube(4,5,6,"Cube"), new Cylinder(7,3,"Cylinder") }; for (int i = 0; i < 3; i++) { cout << fgr[i]->getSurfaceArea() << endl; } return 0; }