정수를 저장하는 객체를 만들기 위한 클래스를 설계하려고 한다.
이 클래스의 객체는 다음과 같이 동작한다.
① 저장할 수 있는 정수의 최대 개수는 객체가 생성될 때 지정한다.
② 숫자를 저장할 수 있다.
③ 가장 오래전에 저장한 숫자를 인출할 수 있다.
④ 마지막으로 저장한 숫자를 인출할 수 있다.
⑤ 저장된 숫자들 중 가장 큰 값을 인출할 수 있다.
⑥ 저장된 숫자들 중 가장 작은 값을 인출할 수 있다.
⑦ 저장된 숫자들의 평균을 구할 수 있다.
⑧ 저장할 수 있는 숫자의 최대 개수를 변경한다.
만일 현재 저장되어 있는 숫자의 개수보다 적을 때는 변경할 수 없다.
이러한 행위를 할 수 있도록 멤버함수 및 연산자를 포함하여 필요한 멤버
들을 포함하여 클래스를 선언하고, 앞에 나열한 모든 행위가 잘 동작하는지
확인할 수 있도록 이 클래스의 객체를 활용하는 프로그램을 작성한다.
☞ 주의
▷ 클래스는 각자 설계하며, 앞에 나열된 사항 외에 필요한 사항이
있다면 스스로 추가할 수 있다.
▷ STL을 사용하지 말고 직접 구현하라.
▷ C++ 언어로 작성해야 하며, 반드시 클래스를 활용해야 한다.
--------------------------------------------------------------
이게 문제입니다
C++이용하여 프로그래밍 하는겁니다
오전에 도움주신걸 기본으로 실습해보고 있는데
처음 씨쁠쁠 설치하고 프로그램켜서
1.프로젝트는 윈32 콘솔 어플리 케이션으로 하고
2. 씨쁠쁠 소스파일로 만든후
코딩을입력했습니다
#include
foo::foo(int capacity)
: buffer_(capacity >= 0 ? new int[capacity] : 0),
count_(0),
capacity_(capacity)
{
}
foo::foo(const foo& right)
: buffer_(right.capacity_ >= 0 ? new int[right.capacity_] : 0),
count_(right.count_),
capacity_(right.capacity_)
{
copy(buffer_, right.buffer_, right.count_);
}
foo::~foo()
{
delete buffer_;
}
void foo::add(int value)
{
if (buffer_ == 0)
return;
if (count_ >= capacity_)
return;
buffer_[count_++] = value;
}
int foo::first() const
{
assert(buffer_ && count_ > 0);
return buffer_[0];
}
int foo::last() const
{
assert(buffer_ && count_ > 0);
return buffer_[count_ - 1];
}
int foo::min() const
{
assert(buffer_ && count_ > 0);
int result = buffer_[0];
for (int i = 1; i < count_; i++)
{
int item = buffer_[i];
if (item < result)
result = item;
}
return result;
}
int foo::max() const
{
assert(buffer_ && count_ > 0);
int result = buffer_[0];
for (int i = 1; i < count_; i++)
{
int item = buffer_[i];
if (item > result)
result = item;
}
return result;
}
int foo::avg() const
{
assert(buffer_ && count_ > 0);
int sum = 0;
for (int i = 0; i < count_; i++)
sum += buffer_[i];
return sum / count_;
}
int foo::capacity() const
{
return capacity_;
}
void foo::capacity(int value)
{
if (value <= capacity_)
return;
int* newBuffer = new int [value];
copy(newBuffer, buffer_, count_);
delete buffer_;
buffer_ = newBuffer;
capacity_ = value;
}
foo& foo::operator = (const foo& right)
{
delete buffer_;
buffer_ = right.capacity_ >= 0 ? new int[right.capacity_] : 0;
count_ = right.count_;
capacity_ = right.capacity_;
copy(buffer_, right.buffer_, right.count_);
return *this;
}
void foo::copy(int* dest, int* src, int count)
{
for (int i = 0; i < count; i++)
dest[i] = src[i];
}
-----------------------------------------
이렇게 입력하고 f5키눌러 디버깅으로 넘어갔는데
에러가 60개가 있다고 나오고 실행은 안되네요 무엇이 잘못되었을까요
답답하네요..