ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 C++ 6장 8번
    C++ 2018. 11. 2. 18:18

    8. 디버깅에 필요한 정보를 저장하는 Trace 클래스를 만들어보자. Trace 클래스를 활용하는 다음 프로그램과 결과를 참고하여 Trace 클래스를 작성하고 전체 프로그램을 완성하라. 디버깅 정보는 100개로 제한한다.


    소스코드


    #include <iostream>
    #include <string>
    using namespace std;
    class Trace {
        static string tag[100];
        static string debug[100];
        static int size;
    public:
        static void put(string t, string d);
        static void print(string t);
    };
    int Trace::size = 0;
    string Trace::tag[100];
    string Trace::debug[100];
    void Trace::put(string t, string d) {
        tag[size] = t;
        debug[size] = d;
        ++size;
    }
    void Trace::print(string t = " ") {
        if (t == " ") {
            cout << "----- 모든 태그의 Trace 정보를 출력합니다. -----" << endl;
            for (int i = 0; i < size; ++i)
                cout << tag[i] << ":" << debug[i] << endl;
        }
        else {
            cout << "----- " << t << "태그의 Trace 정보를 출력합니다. -----" << endl;
            for (int i = 0; i < size; ++i) {
                if (tag[i] == "f()")
                    cout << tag[i] << ":" << debug[i] << endl;
            }
        }
    }
    void f() {
        int a, b, c;
        cout << "두 개의 정수를 입력하세요>>";
        cin >> a >> b;
        Trace::put("f()", "정수를 입력 받았음"); // 디버깅 정보 저장
        c = a + b;
        Trace::put("f()", "합 계산"); // 디버깅 정보 저장
        cout << "합은 " << c << endl;
    }
    int main() {
        Trace::put("main()", "프로그램 시작합니다"); // 디버깅 정보 저장
        f();
        Trace::put("main()", "종료"); // put()의 첫 번째 매개 변수는 태그이고
                                     // 두 번째 매개변수는 디버깅 정보이다.
        Trace::print("f()"); // "f()" 태그를 가진 디버깅 정보를 모두 출력한다.
        Trace::print();
    }


    실행결과



    static 변수는 외부에서 초기화 해주어야 합니다.


    printf함수에서는 디폴트 매개변수를 사용하여 모든 것을 출력할지 특정 태그만 출력할지 구분했습니다.


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

    명품 C++ 6장 Open Challenge  (0) 2018.11.02
    명품 C++ 6장 9번  (0) 2018.11.02
    명품 C++ 6장 7번  (0) 2018.11.02
    명품 C++ 6장 6번  (0) 2018.11.02
    명품 C++ 6장 5번  (0) 2018.11.02

    댓글

© 2018 TISTORY. All rights reserved.