Minwoo Dev.

[C++] 윤성우의 열혈 C++ 프로그래밍 Ch04-2 : 다양한 클래스의 정의 문제풀이 본문

C++

[C++] 윤성우의 열혈 C++ 프로그래밍 Ch04-2 : 다양한 클래스의 정의 문제풀이

itisminu 2024. 3. 9. 12:16
728x90
반응형
SMALL

문제

 

다음의 Point 클래스를 기반으로 하여(활용하여) 원을 의미하는 Circle 클래스를 정의하자.

 

class Point{
    private:
    int xpos, ypos;
    public:
    void Init(int x, int y){
        xpos=x;
        ypos=y;
    }
    void ShowPointInfo() const{
        cout<<"["<<xpos<<", "<<ypos<<"]"<<endl;
    }
};

 

 

Circle 객체에는 좌표상의 위치 정보(원의 중심좌표)와 반지름의 길이 정보를 저장 및 출력할 수 있어야한다. 그리고 여러분이 정의한 Circle 클래스를 기반으로 Ring 클래스도 정의하자. 링은 두 개의 원으로 표현가능하므로(바깥쪽 원과 안쪽 원), 두 개의 Circle 객체를 기반으로 정의가 가능하다. 참고로 안쪽 원과 바깥쪽 원의 중심좌표가 동일하다면 두께가 일정한 링을 표현하는 셈이 된다. 

이렇게 해서 클래스의 정의가 완료되었다면, 다음 main함수를 기반으로 실행시키자/

 

 

실행의 예

Inner Circle Info ...
radius : 4
[1, 1]
Outter Circle Info ...
radius : 9
[2, 2]

 

 

 

정답

#include <iostream>
using namespace std;

class Point
{
private:
    int xpos, ypos;

public:
    void Init(int x, int y)
    {
        xpos = x;
        ypos = y;
    }
    void ShowPointInfo() const
    {
        cout << "[" << xpos << ", " << ypos << "]" << endl;
    }
};

class Circle
{
private:
    Point center;
    int r;

public:
    void Init(int x, int y, int rad)
    {
        center.Init(x, y);
        r = rad;
    }
    void ShowCircle()
    {
        center.ShowPointInfo();
        cout << "radius : " << r << endl
             << endl;
    }
};

class Ring
{
private:
    Circle OuterCir;
    Circle InnerCir;

public:
    void Init(int Ox, int Oy, int Or, int Ix, int Iy, int Ir)
    {
        InnerCir.Init(Ox, Oy, Or);
        OuterCir.Init(Ix, Iy, Ir);
    }
    void ShowRingInfo()
    {
        cout << "Inner Circle Info..." << endl;
        InnerCir.ShowCircle();
        cout << "Outer Circle Info..." << endl;
        OuterCir.ShowCircle();
    }
};

int main(void)
{
    Ring ring;
    ring.Init(1, 1, 4, 2, 2, 9);
    ring.ShowRingInfo();
    return 0;
}

 

 

결과

728x90
반응형
LIST