본문 바로가기
programming/명품 C++ programming

명품 C++ programming 실습 문제 8장 2번

by doachy 2020. 8. 17.

문제.

* 문제 1~2에 적용되는 원을 추상화한 Circle 클래스가 있다.

class Circle{
	int radius;
public:
	Circle(int radius=0) { this->radius = radius;}
    int getRadius() { return radius;}
    void setRadius(int radius) { this->radius = radius; }
    double getArea() { return 2.14*radius*radius }
};

2. 다음과 같이 배열을 선언하여 다음 실행 결과가 나오도록 Circle을 상속받은 NamedCircle 클래스와 main() 함수 등 필요한 함수를 작성하라.

NamedCircle pizza[5];

실행 결과

 

코드.

#include <iostream>
#include <string>
using namespace std;

class Circle {
	int radius;
public :
	Circle(int radius=0) { this->radius = radius; }
	int getRadius() { return radius; }
	void setRadius(int radius) { this->radius = radius; }
	double getArea() { return 3.14*radius*radius; }
};

class NamedCircle : public Circle {
	string name;
public :
	NamedCircle(int radius=0, string name="") : Circle( radius ) {
		this->name = name;
	}
	void setRName(int r, string name) { setRadius(r); this->name = name; }
	string getName() { return name; }
};

int main() {

	NamedCircle pizza[5];
	int i,r; string name;

	cout << "5 개의 정수 반지름과 원의 이름을 입력하세요" << endl;
	for( i=0; i<5; i++) {
		cout << i+1 << ">> ";
		cin >> r >> name;
		pizza[i].setRName( r, name);
	}

	double max = pizza[0].getArea();
	name = pizza[0].getName();
	for( i=1;i<5; i++) {
		if( pizza[i].getArea() > max ) { 
			max = pizza[i].getArea();
			name = pizza[i].getName();
		}
	}
	cout << "가장 면적이 큰 피자는 " << name << "입니다" << endl;
}

 

** 클래스 배열 변수를 선언하기 위해서는 디폴트 매개 변수를 꼭 이용하여야 한다.

댓글