Minwoo Dev.

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

C++

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

itisminu 2024. 3. 6. 14:03
728x90
반응형
SMALL

 

문제 1

 

계산기 기능의 Calculator 클래스를 정의해 보자. 기본적으로 지니는 기능은 덧셈, 뺄셈, 곱셈, 그리고 나눗셈이며, 연산을 할 때마다 어떠한 연산을 몇 번 수행했는지 기록되어야 한다. 아래의 main 함수와 실행의 예에 부합하는 Calculator 클래스를 정의하면 된다.

단, 멤버변수는 private로, 멤버함수는 public으로 선언하자. 이렇게 선언하는 이유에 대해서는 다음 Chapter에서 자세히 언급한다.

int main(void)
{
    Calculator Cal;
    cal.Init();
    cout << "3.2 + 2.4 = " << cal.Add(3.2, 2.4) << endl;
    cout << "3.5 / 1.7 = " << cal.Div(3.5, 1.7) << endl;
    cout << "2.2 - 1.5 = " << cal.Min(2.2, 1.5) << endl;
    cout << "4.9 / 1.2 = " << cal.Div(4.9, 1.2) << endl;
    cal.ShowOpCount();
    return 0;
}

 

 

실행의 예

3.2 + 2.4 = 5.6
2.5 / 1.7 = 2.05882
2.2 - 1.5 = 0.7
4.9 / 1.2 = 4.08333
덧셈 : 1 뺄셈 : 1 곱셈 : 0 나눗셈 : 2

 

 

 

정답 

#include <iostream>
using namespace std;

class Calculator
{
private:
    int AddNum;
    int MinNum;
    int DivNum;
    int MulNum;

public:
    void Init()
    {
        AddNum = 0;
        MinNum = 0;
        DivNum = 0;
        MulNum = 0;
    }

    double Add(double v1, double v2)
    {
        AddNum++;
        return v1 + v2;
    }

    double Min(double v1, double v2)
    {
        MinNum++;
        return v1 - v2;
    }

    double Div(double v1, double v2)
    {
        DivNum++;
        return v1 / v2;
    }

    double Mul(double v1, double v2)
    {
        MulNum++;
        return v1 * v2;
    }

    void ShowOpCount()
    {
        cout << "덧셈 : " << AddNum << " 뺄셈 : " << MinNum << " 곱셈 : " << MulNum << " 나눗셈 : " << DivNum << endl;
    }
};

int main(void)
{
    Calculator cal;
    cal.Init();
    cout << "3.2 + 2.4 = " << cal.Add(3.2, 2.4) << endl;
    cout << "3.5 / 1.7 = " << cal.Div(3.5, 1.7) << endl;
    cout << "2.2 - 1.5 = " << cal.Min(2.2, 1.5) << endl;
    cout << "4.9 / 1.2 = " << cal.Div(4.9, 1.2) << endl;
    cal.ShowOpCount();
    return 0;
}

 

 

결과

 

 

 

 

 

문제 2

문자열 정보를 내부에 저장하는 Printer라는 이름의 클래스를 디자인하자. 이 클래스의 두 가지 기능은 다음과 같다.

  • 문자열 저장
  • 문자열 출력

아래의 main 함수와 실행의 예에 부합하는 Printer 클래스를 정의하되, 이번에도 역시 멤버변수는 private으로, 멤버함수는 public으로 선언하자.

int main(void)
{
    Printer pnt;
    pnt.SetString("Hello world!");
    pnt.ShowString();

    pnt.SetString("I love C++");
    pnt.ShowString();
    return 0;
}

 

 

실행의 예

Hello world!
I love C++

 

 

정답

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

class Printer
{
private:
    char chars[30];

public:
    void SetString(char *s)
    {
        strcpy(chars, s);
    }

    void ShowString()
    {
        cout << chars << endl;
    }
};

int main(void)
{
    Printer pnt;
    pnt.SetString("Hello world!");
    pnt.ShowString();

    pnt.SetString("I love C++");
    pnt.ShowString();
    return 0;
}

 

 

결과

728x90
반응형
LIST