c++ 질문좀 드릴게요..
책리스트에 책을 추가할 때 책 제목을 기준으로 정렬(알파벳 오름차순)이 되도록 AddBook()을 수정하려고하는데요..
(strcmp 함수를 이용하여 책이 추가될 위치를 찾고 추가될 위치 이후는 순서가 뒤로 밀리도록 함)
아무리 해봐도 실행이되질 않네요.. 어떻게 해야될까요?
#include
#include
using namespace std;
// -------------------------------------------------------
class Book
{
char title[40];
char author[20];
int year;
bool isSold;
public:
Book(char * t, char * a, int y)
{
strcpy(title, t);
strcpy(author, a);
year = y;
isSold = false;
}
char* GetTitle() { return title; }
bool GetIsSold() { return isSold; }
void SetIsSold(bool s) { isSold = s; }
void ShowBookInfo()
{
cout << "Book Info : " ;
cout << title << ", "<< author <<", " << year;
if( isSold ) cout << " *** Sold ***";
cout << endl;
}
};
class BookSeller
{
int sellerID;
char name[20];
Book * bookList[10];
int bookCnt;
public:
BookSeller(int id, char * name) : sellerID(id)
{
strcpy(this->name, name);
bookCnt = 0;
}
~BookSeller()
{
for(int i=0; i
delete bookList[i];
}
void AddBook(char * t, char * a, int y)
{
bookList[bookCnt] = new Book(t,a,y);
bookCnt++;
}
void DeleteBook(char * t)
{
for(int i=0; i
if( strcmp( bookList[i]->GetTitle() , t) == 0 )
{
delete bookList[i];
for( ;i
bookList[i] = bookList[i+1];
bookCnt--;
return;
}
cout << "Sorry, we have not <" << t << ">!" << endl;
}
void SellBook(char * t)
{
for(int i=0; i
if( strcmp( bookList[i]->GetTitle() , t) == 0 )
{
if ( bookList[i]->GetIsSold() )
cout << "Sorry, <" << t << "> is sold out!" << endl;
else
{ cout << "<" << t << "> is sold, now." << endl;
bookList[i]->SetIsSold(true);
}
return;
}
cout << "Sorry, we have not <" << t << ">!" << endl;
}
void ShowBookList()
{
cout << endl << "+++++++++++++ BooK List +++++++++++++" << endl;
for(int i=0; i
bookList[i]->ShowBookInfo();
cout << endl;
}
};
void main()
{
BookSeller seller( 2013155, "Hong Jun");
seller.AddBook("Hard Thinking", "Dr Han", 2008);
seller.AddBook("The tree","Bernar", 2009);
seller.AddBook("Starry Night", "Gogh", 1890);
seller.AddBook("CPP Programming", "Kwag", 2010);
seller.AddBook("Apple Story", "Apple", 2010);
seller.ShowBookList();
seller.SellBook("The tree");
seller.SellBook("The seven weeks");
seller.SellBook("The tree");
seller.ShowBookList();
seller.DeleteBook("The tree");
seller.ShowBookList();
return;
}
소스코드를 올릴 때에는 소스코드 내용 으로 올려
소스코드를 올릴 때에는 소스코드 태그를 이용해서 올려주세요.
수정 삭제 버튼이 안보이네요..
죄송합니다ㅠㅠ
컴파일 에러가 여기저기
일단 컴파일 에러부터 모두 고치는게 어떨까요?
또, strcpy를 반드시 사용해야 하는지...?
여튼, 코드를 BookSeller.h와 BookSeller.cpp로 나눠서 .h에는 declare을, .cpp에는 정의를 하시는게 훨씬 보기 쉬울겁니다. main함수는 main.cpp에 따로 격리해주시고요. 또, 인덴트를 해주시면 더욱 보기가 좋을것 같습니다. 지금은 {}가 모두 평행해서 보기가 힘듭니다. 밑에 예시를 첨가해보겠습니다.
CodeBlocks로 자동 인덴트해보니까 맨 끝이 조금 이상하죠? ~BookSeller()에서부터 괄호의 갯수가 맞지 않은건지 계속 쭉쭉 인덴트되어있네요. 그리고 <code>태그를 사용 안 하셔서 보다큼/보다작음 기호들이 죄다 생략됐네요...
댓글 달기