네이버 부트캠프에서 파이썬 강좌에서 과제로 준걸 c++로 구현.ㅣ
인공지능(AI) 기초 다지기 > Python Object Oriented Programming : 부스트코스 (boostcourse.org)
인공지능(AI) 기초 다지기
부스트코스 무료 강의
www.boostcourse.org
노트북 - 노트
노트북 - 생성, 노트북 간 합치기.
노트 생성, 삭제, 수정(글쓰기) 기능.
구상: 클래스형 벡터 자료형 NOTE BOOK에 이중벡터 클래스 자료형을 가진 NOTE(다수의 노트들)을 Push 했다.
이에 따라 NOTE BOOK은 다수로 만들 수 있으며, 원하는 노트북에 각각 생성된 다수의 노트를 넣어 STRING 데이터를 넣을 수 있으며, Vector의 erase 기능을 통해 노트를 삭제할 수 있다.
노트북을 삭제하는 기능은 생각하지 않아서, 만들지 않았다.
노트북 간 merge기능이 가능하며, merge 시 각 노트북에 있는 노트들을 노트북 순으로 합치게 만들었다. 즉 하나의 노트에 각 노트북에 있는 노트들을이 들어가게 된다.
/*노트북 - 노트 만들기 //객체지향 */
/*다듬을 때 부모/자식 즉 상속이나 friend를 이용해서 좀 더 깔끔하게 만들 수 있을 거 같다.*/
/*후에 보강하자.*/
#include<cstdio>
#include<string>
#include<vector>
using namespace std;
class NOTE
{
string contents;
public:
NOTE()
{
this->contents = "";
}
void writing()
{
char content[100]{0,};
scanf("%s", content);
this->contents = content;
}
void remove()
{
this->contents = "";
}
string print()
{
return this->contents;
}
};
class NOTEBOOK
{
int notes; // note 수.
public:
vector<NOTE> NOTES;
NOTEBOOK() { this->notes = 0; }
bool is300()
{
if (this->notes > 300) {
printf("300페이지를 초과했습니다.\n");
return true;
}
return false;
}
void CreateNote()
{
if (is300()) return;
NOTES.push_back(NOTE());
this->notes++;
}
void AmendNote( int n) //n 은 수정할 페이지,
{
if (is300()) return;
if (NOTES.size() <= 0) return;
if (n > this->notes && n < 0)
{
printf("범위에 없는 노트를 수정하려 하고 있습니다.\n");
return;
}
NOTES[n - 1].writing();
}
void RemoveNote(vector<NOTE>& vect)
{
int del;
scanf(" %d", &del);
if (del > this->notes && del < 0)
{
printf("범위에 없는 노트를 삭제려 하고 있습니다.\n");
return;
}
vect.erase(vect.begin() + (del-1));
this->notes--;
}
void ShowPages()
{
printf("모든 페이지의 정보가 보여집니다.\n");
for (int i = 1; i <= NOTES.size(); ++i)
{
string rt = NOTES[i - 1].print();
printf("%d :", i);
int t = 0;
while (rt[t] != '\0')
{
printf("%c", rt[t++]);
}
printf("\n");
}
}
};
vector<NOTE> merge_notebook(NOTEBOOK const &a, NOTEBOOK const &b)
{
vector<NOTEBOOK>sum;
sum.push_back(a);
sum.push_back(b);
vector<NOTE>NOTE;
for (int i = 0; i < sum.size(); ++i)
{
for (int j = 0; j < sum[i].NOTES.size(); ++j)
{
NOTE.push_back(sum[i].NOTES[j]);
}
}
return NOTE;
}
void createNoteBook(vector<NOTEBOOK>&NOTEBOOKS)
{
//노트북 생성하기
NOTEBOOKS.push_back(NOTEBOOK());
}
void process()
{
vector<NOTEBOOK>NOTEBOOKS;
createNoteBook(NOTEBOOKS);
createNoteBook(NOTEBOOKS);
int t = 1;
for (int i = 0; i < 5; ++i)
{ /*노트북 0, 1 안에 각각 노트 5개 씩 만듦.*/
NOTEBOOKS[0].CreateNote();
NOTEBOOKS[0].AmendNote(t);
NOTEBOOKS[0].ShowPages();
NOTEBOOKS[1].CreateNote();
NOTEBOOKS[1].AmendNote(t);
NOTEBOOKS[1].ShowPages();
t++;
}
vector<NOTE> MERGE_RT = merge_notebook(NOTEBOOKS[0], NOTEBOOKS[1]);
printf("NOTEBOOK MERGE\n");
for (int i = 0; i < MERGE_RT.size(); ++i)
{
int tt = 0;
string str = MERGE_RT[i].print();
while (str[tt] != '\0')
{
printf("%c", str[tt++]);
}
}
}
int main(void)
{
process();
}
'C_C++' 카테고리의 다른 글
| 한글 각각 출력하기 (0) | 2022.09.23 |
|---|---|
| 2차원 벡터 사용법 (0) | 2022.08.02 |
| 포인터 활용1(메인함수 내에서 간접참조사용) (0) | 2022.06.30 |
| vector 자료형에 pair, class pointer (0) | 2022.06.30 |
| 입력키 안보이게 하여 출력. (0) | 2022.04.13 |