반응형
문제 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 3.14 * radius * radius; }
};
문제
다음과 같이 배열을 선언하여 다음 실행 결과가 나오도록 Circle을 상속받은 NamedCircle 클래스와 main() 함수 등 필요한 함수를 작성하라.
NamedCircle pizza[5];
결과
5 개의 정수 반지름과 원의 이름을 입력하세요
1>> 5 크림피자
2>> 8 치즈피자
3>> 25 대왕피자
4>> 30 블랙홀피자
5>> 15 마늘피자
소스코드
#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() {};
string getName() { return name; }
void setName(string name) { this->name = name; }
};
int main()
{
NamedCircle pizza[5];
int r;
string name;
int count = 0;
cout << "5 개의 정수 반지름과 원의 이름을 입력하세요" << endl;
for (int i = 0; i < 5; i++)
{
cout << i + 1 << ">>";
cin >> r >> name;
pizza[i].setRadius(r);
pizza[i].setName(name);
}
for (int i = 0; i < 4; i++)
{
if (pizza[i].getRadius() < pizza[i + 1].getRadius())
count = i + 1;
}
cout << "가장 면적이 큰 피자는 " << pizza[count].getName() << "입니다." << endl;
}
설명
Circle과 같은 원리인 함수 NamedCircle클래스에 선언해 준 후 Circle의 멤버 함수와 NamedCircle의 멤버 함수를 이용하여 값들을 저장하고 반지름의 크기만 비교하여 가장 큰 곳의 인덱스를 기억하여 출력한다.
반응형
'명품C++프로그래밍' 카테고리의 다른 글
명품 C++ Programming 실습문제 8장 4번 (0) | 2021.05.21 |
---|---|
명품 C++ Programming 실습문제 8장 3번 (0) | 2021.05.21 |
명품 C++ Programming 실습문제 8장 1번 (0) | 2021.05.21 |
명품 C++ Programming 실습문제 7장 12번 (0) | 2021.05.21 |
명품 C++ Programming 실습문제 7장 11번 (0) | 2021.05.21 |