-
명품 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