ginger_ring
10
2020-11-19 16:45:31
2
161

C++코드 질문


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;
}


0
  • 답변 2

  • kenu
    51k
    2020-11-20 02:05:35
    해당 게시물은 관리자에 의해 IT News & 정보에서 Tech Q&A로 이동 되었습니다.
  • 파랭이
    203
    2020-11-20 11:31:23
    Shape(string name) { cout << name << endl; }

    Shape의 name변수는 public로 하시고,

    Shape(string n) { name = n; } 로 변경하시고, 

    main에서 cout으로 fgr[i]->name 출력하시면 됩니다.

    간단한 문제이니 차근차근 보시면 쉽게 이해하실듯요.

  • 로그인을 하시면 답변을 등록할 수 있습니다.