네이버 부트캠프에서 파이썬 강좌에서 과제로 준걸 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();
	

}

 

 

 

 

+ Recent posts