ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 C++ 9장 1번 2번
    C++ 2018. 11. 6. 17:21

    1~2 다음은 단위를 변환하는 추상 클래스 Converter 이다.


    class Converter {
    protected:
        double ratio;
        virtual double convert(double srt) = 0; // src를 다른 단위로 변환한다.
        virtual string getSourceString() = 0; // src 단위 명칭
        virtual string getDestString() = 0; // dest 단위 명칭
    public:
        Converter(double ratio) { this->ratio = ratio; }
        void run() {
            double src;
            cout << getSourceString() << "을 " << getDestString() << "로 바꿉니다. ";
            cout << getSourceString() << "을 입력하세요>> ";
            cin >> src;
            cout << "변한 결과 : " << convert(src) << getDestString() << endl;
        }
    };


    1. Converter 클래스를 상속받아 달러를 원화로 환산하는 WonToDollar 클래스를 작성하라. 


    소스코드


    #include <iostream>
    #include <string>
    using namespace std;
    class Converter {
    protected:
        double ratio;
        virtual double convert(double srt) = 0; // src를 다른 단위로 변환한다.
        virtual string getSourceString() = 0; // src 단위 명칭
        virtual string getDestString() = 0; // dest 단위 명칭
    public:
        Converter(double ratio) { this->ratio = ratio; }
        void run() {
            double src;
            cout << getSourceString() << "을 " << getDestString() << "로 바꿉니다. ";
            cout << getSourceString() << "을 입력하세요>> ";
            cin >> src;
            cout << "변한 결과 : " << convert(src) << getDestString() << endl;
        }
    };
    class WonToDollar : public Converter {
        string src, dest;
    protected:
    string getSourceString() { return src; }
    string getDestString() { return dest; }
    double convert(double srt) { return srt/ Converter::ratio; }
    public:
        WonToDollar(double ratio) : Converter(ratio) {
            src = "원"; dest = "달러";
        }
        
    };
    int main() {
        WonToDollar wd(1010); // 1 달러에 1010원
        wd.run();
    }



    실행결과



    Converter 의 protected 함수들은 순수 가상 함수이기 때문에 WonToDollar 에서 구현해줍니다.

    ratio에 접근하기위해 접근 지정자 :: 을 사용합니다.


    2. Converter 클래스를 상속받아 km를 mile(마일)로 변환하는 KmToMile 클래스를 작성하라.


    소스코드


    #include <iostream>
    #include <string>
    using namespace std;
    class Converter {
    protected:
        double ratio;
        virtual double convert(double srt) = 0; // src를 다른 단위로 변환한다.
        virtual string getSourceString() = 0; // src 단위 명칭
        virtual string getDestString() = 0; // dest 단위 명칭
    public:
        Converter(double ratio) { this->ratio = ratio; }
        void run() {
            double src;
            cout << getSourceString() << "을 " << getDestString() << "로 바꿉니다. ";
            cout << getSourceString() << "을 입력하세요>> ";
            cin >> src;
            cout << "변한 결과 : " << convert(src) << getDestString() << endl;
        }
    };
    class KmToMile : public Converter {
        string src, dest;
    protected:
    double convert(double srt) { return srt / Converter::ratio; }
        string getSourceString() { return src; }
        string getDestString() { return dest; }
    public:
        KmToMile(double ratio) : Converter(ratio) {
            src = "km"; dest = "Mile";
        }
    };
    int main() {
        KmToMile toMile(1.609344); // 1 mile은 1.609344 km
        toMile.run();
    }


    실행결과



    1번과 무엇을 무엇으로 바꾸는지만 달라진 문제입니다.

    'C++' 카테고리의 다른 글

    명품 C++ 9장 5번  (0) 2018.11.06
    명품 C++ 9장 3번 4번  (0) 2018.11.06
    명품 C++ 8장 Open Challenge  (0) 2018.11.04
    명품 C++ 8장 9번  (5) 2018.11.04
    명품 C++ 8장 8번  (0) 2018.11.04

    댓글

© 2018 TISTORY. All rights reserved.