ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 C++ 7장 10번
    C++ 2018. 11. 3. 14:24

    10. 통계를 내는 Statistics 클래스를 만들려고 한다. 데이터는 Statistics 클래스 내부에  int 배열을 동적으로 할당받아 유지한다. 다음과 같은 연산이 잘 이루어지도록 Statistics 클래스와!, >>, <<,  ~ 연산자 함수를 작성하라.


    소스코드


    #include <iostream>
    using namespace std;
    class Statistics {
        int *p;
        int index;
    public:
        Statistics() { p = new int[10]; index = 0; }
        ~Statistics() { delete[] p; }
        bool operator!();
        Statistics& operator<<(int x);
        void operator~();
        Statistics& operator>>(int &avg);
    };
    bool Statistics::operator!() {
        if (index==0) return true;
        else return false;
    }
    Statistics& Statistics::operator<<(int x) {
        p[index] = x;
        ++index;
        return *this;
    }
    void Statistics::operator~() {
        for (int i = 0; i < index; ++i)
            cout << p[i] << ' ';
        cout << endl;
    }
    Statistics& Statistics::operator>>(int &avg) {
        int sum = 0;
        for (int i = 0; i < index; ++i)
            sum += p[i];
        avg = sum / index;
        return *this;
    }
    int main() {
        Statistics stat;
        if (!stat) cout << "현재 통계 데이타가 없습니다." << endl;
        int x[5];
        cout << "5 개의 정수를 입력하라>>";
        for (int i = 0; i < 5; ++i) cin >> x[i]; // x[i]에 정수 입력
        for (int i = 0; i < 5; ++i) stat << x[i]; // x[i] 값을 통계 객체에 삽입한다.
        stat << 100 << 200; // 100, 200을 통계 객체에 삽입한다.
        ~stat; // 통계 데이타를 모두 출력한다.
        int avg;
        stat >> avg; // 통계 객체로부터 평균을 받는다.
        cout << "avg= " << avg << endl;
    }


    실행결과



    통계 데이터에 비어있는지 들어있는지는 index 를 이용해 판별했습니다.


    << >> 연산자에선 참조를 리턴해야 정상적으로 연산이 실행됩니다.



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

    명품 C++ 7장 12번  (0) 2018.11.03
    명품 C++ 7장 11번  (0) 2018.11.03
    명품 C++ 7장 9번  (0) 2018.11.03
    명품 C++ 7장 8번  (0) 2018.11.03
    명품 C++ 7장 7번  (0) 2018.11.03

    댓글

© 2018 TISTORY. All rights reserved.