극프
접속 : 5723   Lv. 64

Category

Profile

Counter

  • 오늘 : 7 명
  • 전체 : 105078 명
  • Mypi Ver. 0.3.1 β
[잡소리] c++ 도움좀 얻고싶습니다 알려주신데로 했는데 (19) 2012/11/19 PM 08:55
--------------------------------------------------------------

정수를 저장하는 객체를 만들기 위한 클래스를 설계하려고 한다.

이 클래스의 객체는 다음과 같이 동작한다.
① 저장할 수 있는 정수의 최대 개수는 객체가 생성될 때 지정한다.
② 숫자를 저장할 수 있다.
③ 가장 오래전에 저장한 숫자를 인출할 수 있다.
④ 마지막으로 저장한 숫자를 인출할 수 있다.
⑤ 저장된 숫자들 중 가장 큰 값을 인출할 수 있다.
⑥ 저장된 숫자들 중 가장 작은 값을 인출할 수 있다.
⑦ 저장된 숫자들의 평균을 구할 수 있다.
⑧ 저장할 수 있는 숫자의 최대 개수를 변경한다.
만일 현재 저장되어 있는 숫자의 개수보다 적을 때는 변경할 수 없다.

이러한 행위를 할 수 있도록 멤버함수 및 연산자를 포함하여 필요한 멤버
들을 포함하여 클래스를 선언하고, 앞에 나열한 모든 행위가 잘 동작하는지
확인할 수 있도록 이 클래스의 객체를 활용하는 프로그램을 작성한다.

☞ 주의
▷ 클래스는 각자 설계하며, 앞에 나열된 사항 외에 필요한 사항이
있다면 스스로 추가할 수 있다.
▷ 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개가 있다고 나오고 실행은 안되네요 무엇이 잘못되었을까요

답답하네요..

신고

 

할락궁이    친구신청

헤더는 #include 하셨나요?

극프    친구신청

아니요.. 헤더파일을 따로 만들어야 하나요?...

할락궁이    친구신청

하다못해 선언은 위에서 해주셔야지요

극프    친구신청

귀찮게 해서 죄송합니다.. 어렵게 프로그램 깔아서 코딩까지는 넣엇는데
그다음부터 멍하네요...

오락보이    친구신청

애러는 위에서 부터 잡으시구요
애러도 알려주시면 문제 해결에 도움이 되요

극프    친구신청

#include <cassert> 로시작하는바로 밑에부분에
알려주신 선언을 넣었더니 이번엔 에러가 2개로 뜨네요
Compiling...
ts.cpp
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/jp.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

jp.exe - 2 error(s), 0 warning(s)

포주    친구신청

진짜 배우려고한다면 이정도는 혼자해결하는게 도움이 됨.

120d_Coupe    친구신청

메인함수는 어디갔나요? 헤더파일도 아니고 소스파일에 클래스 정의 다되어있는데 메인함수는.. ?

극프    친구신청

왜이렇게 어렵지..

극프    친구신청

할락궁이//저기 알려주신 코드는 어디부분에 넣어야할까요..
소스파일에 알려주신 코딩 순서대로 넣으면 되나요?

120d_Coupe    친구신청

극프 // 클래스 정의는 헤더파일에 소스파일에서 클래스를 사용할려면 메인함수 이전에 선언을 하시고 헤더파일을 불러와서 써야죠. 아니면 소스파일에 전부 선언과 정의를 하신다면 메인함수 이후에 정의를 하시고 선언은 메인함수 이전에 하셔야죠. 그리고 지금 위에건 콘솔 app인데 메인함수는 어딨나요? 아무기능을 안하더라도 메인함수가 없는데 컴파일이 되겠나요? 헤더도 아니고 소스인데요. 지금 링크 에러는 메인함수가 없다는 에러입니다.

브금돋네    친구신청

일단 c++의 클래스 기본이 안잡혀 있는거 같은데
처음부터 공부하세요
그리고 메인문이 없어서 링크도 안되서 저 에러가 뜨네여

극프    친구신청

할락궁이//감사합니다 알려주신 코딩으로 순서대로 입력해보니
해결되었네요 정말 진심으로 감사드립니다
이제부터는 완성된 코딩을 한번 쭉 분석해봐야겠네요

극프    친구신청

아그리고 다른분들 역시 감사합니다
물론 제혼자 힘으로 해결하는게 맞지만 지금 처음부터 다시 시작하는것은 무리가 있어 도움을 요청했습니다
물론 제가 프로그래밍쪽으로 계속 나아갈것이라면 처음부터 차근차근 배우는게 맞지만 저는 이미 다른쪽으로 취직해서 일을하고 있는상황에서 다시 대학을 들어가게되었는데 졸업반인상황에서 프로그래밍에서 막혔었네요 객관식 시험문제는 외워서라도 풀수 있지만 프로그래밍을 처음부터 다시배우자니 시간적 투자가 너무많아지네요 제가 너무 개념없이 질문을 해서 죄송합니다
5년째 학교다니고 있는 입장에서 이번학기로 끝냈으면 하고 어렵게 질문드린겁니다 저는 원래 CAD 및 3D그래픽을 공부하던터라 프로그래밍은 학교다닐적에 배우긴했지만 영소질이 없었네요.. 예전에 배웠던것도 이제는 모두 기억이 안나고
이렇게 더듬더듬 물어가며 하고있네요

모두 감사합니다

Ralph    친구신청

형 졸업장 때문에 졸작진행하시는거 같은데...나도 컴전공 아닌데 졸작 프로그래밍 때문에 고생해봐서 그 맘 잘 암...일단 같은 과 아는 동생들이나 졸작담당 교수님네 연구실 담당 조교 있으면 붙잡고 물고 늘어지면 도와줄거야.. 빈손으로 가면 퇴짜고 검색하고 공부하고 이만큼 노력했는데 막히는 부분좀 도와달라고 찾아가면 왠만하면 다 도와줄거야... 화이팅...

극프    친구신청

RALPH//신경써주셔서 고맙습니다
근데 학교가 방통대라서 교수 찾아뵐수도 없고 선후배의 개념이 없어서
마땅히 물어볼곳이 없네요.. 같이 학교다니던 친구들.. 다 프로그래밍 버리고
각자 살길 찾아 흩어져셔... 그마나 제가 제일 잘할정도라.. 주변에는 도움을
얻을만한곳이 없네요 지금까지야 과제물 판매하는 사이트를 통해서 소스자료얻어 간단히 편집후 제출해서 버티긴 했으나 이번 과제물은 갑작스럽게 올라온거라
판매하는 사이트에서도 대응을 못해준다고 하네요...
이렇게 까지해서라도 졸업장을 따야하는 상황이라 답답해서 도움좀
요청했습니다

모두감사합니다
X