C++ 120

[강의] 12월 19일 수업정리

오늘의 강의는 야구 게임을 만들어 보았다. ( 내일 완성할 예정, 아직 미완성 )  1. table.h#pragma once#include class C_TABLE{public: enum class E_TYPE { E_OUT = 0, E_BALL, E_STRIKE, E_MAX };private: E_TYPE m_arTable[10];public: C_TABLE() = default; void setTable(int* pBall, int nBallLength, int nStrike); E_TYPE getResult(int nNumber);};E_TYPE::enum class로 E_OUT, E_BALL, E_STRIKE를 정의하여 각각 고유 번호를 부여, 추가로 최대값을 나타내는 E_MAX도 포함m_..

C++ 2024.12.19

[강의] 12월 18일 수업정리

오늘은 함수 포인터에 대한 수업을 들었다. 1. 함수 포인터 1.1 함수 포인터의 기본  C언어 #include void function();int main(){ void (*pFunc)() {}; pFunc = function; pFunc();}void function(){ printf("테스트\n");} C++#include void function();int main(){ void (*pFunc)() {}; pFunc = &function; (*pFunc)();} void function(){ printf("테스트\n");}void (*pFunc)() {}- 함수 포인터 선언 시 함수 원형에 따라 작성해야 하며, ()를 포함해야 한다.pFunc = &function / (*pFunc)() - ..

C++ 2024.12.18

[강의] 12월 17일 수업정리

오늘은 싱글톤, 포인터 함수 기본에 대한 수업을 들었다. 1. 싱글톤1.1 싱글톤 기본 원형  싱글톤이란 특정 클래스의 인스턴스를 단 하나만 생성되도록 보장하는 디자인 패턴이다. [디자인 패턴, 간단하게 말해서 클래스 결합 예제로 클래스를 이런 식으로 만들게 되면 그 방식대로 사용가능하다는 이야기]여러 번 호출되더라도 새로운 인스턴스를 생성하지 않고, 최초 호출 시 생성된 인스턴스를 재활용합니다.예시를 봐보자#pragma onceclass C_DATA{private: int m_nData;private: C_DATA() = default; // 생성자를 private으로 선언하여 외부에서 호출하지 못하도록 막음 public: void setData(int nData); int getData(); stat..

C++ 2024.12.17

[강의] 12월 16일 수업정리

오늘은 정적변수, 정적 함수에 대한 수업을 들었다. 1. C 메모리 구조 1. 코드(Code) 영역실행할 프로그램의 코드가 저장되는 영역.읽기 전용(Read-Only)으로 설정되어 프로그램 코드가 변경되지 않도록 보호.정적 크기를 가지며 프로그램 실행 중에 크기가 변하지 않음.2. 데이터(Data) 영역전역 변수와 정적 변수가 저장되는 영역.초기화된 변수는 초기화 영역에, 초기화되지 않은 변수는 BSS(Zero-initialized Segment)에 저장.프로그램 시작 시 고정된 크기(일반적으로 약 1MB)로 메모리를 할당받음.이 고정된 메모리 내에서 변수를 할당하거나 반환하면서 사용.3. 스택(Stack) 영역지역 변수와 함수 호출 시 생성되는 스택 프레임이 저장되는 영역.컴파일 타임에 크기가 결정됨...

C++ 2024.12.16

[강의] 12월 13일 수업정리

오늘은 이진 검색 트리 이중 포인터 earse에 대한 수업과 순회에 대한 수업을 들었다. 1.  이진 검색 트리 Earse ( 이중 포인터 완성 )- 다른 코드는 똑같으니 달라진 부분의 코드만 올릴 예정 // bst.h#pragma once#include class C_BST{private: struct S_NODE { int nData; S_NODE* pL; S_NODE* pR; };private: S_NODE* m_pRoot;private: S_NODE** findNode(S_NODE** ppNode, int nData); // 대상을 선택하는 코드 void printNode(S_NODE* pNode); S_NODE* createNode(int nData); S_NODE** findMax(S_..

C++ 2024.12.13

[강의] 12월 12일 수업정리

오늘은 이진 검색 트리 삭제 부분 완성과 2중 포인터를 사용하여 만든 이진 검색 트리에 대한 수업을 들었다. 1. 이진 검색 트리 삭제 ( 3가지 전부 )// bst.h#pragma once#include class C_BST{private: struct S_NODE { int nData; S_NODE* pL; S_NODE* pR; };private: S_NODE* m_pRoot;private: void printNode(S_NODE* pNode); S_NODE* createNode(int nData); S_NODE* insertNode(S_NODE* pNode, int nData); void findMaxNode(S_NODE*& pMin, S_NODE* pUp);public: C_BST() = d..

C++ 2024.12.13

[강의] 12월 11일 수업정리

오늘은 이진 검색 트리에 insert 부분, insert 재귀함수, earse에 대한 부분에 대한 수업을 들었다.  1. 이진 검색 트리 Insert bool C_BST::insert(int nData){ if (!m_pRoot) { m_pRoot = createNode(nData); return true; } bool bCreate{}; S_NODE* pNode = m_pRoot; while (pNode->nData != nData) { if (nData nData) // pL { if (!pNode->pL) { pNode->pL = createNode(nData); bCreate = true; } pNode = pNode->pL; } else if (nData > ..

C++ 2024.12.11

[강의] 12월 10일 수업정리

어제 했던 더미노드에 대한 복습과 이진 검색 트리에 대한 수업을 들었다. 1. 더미노드 복습 // node.h#pragma onceclass C_LIST;class C_NODE{ friend C_LIST;private: int m_nData; C_NODE* m_pPrev; C_NODE* m_pNext;private: C_NODE* linkNode(C_NODE* pNext);public: C_NODE() = default; int getData(); C_NODE* getNext(); void init(int nData);};// node.cpp#include "node.h"C_NODE* C_NODE::linkNode(C_NODE* pNext){ m_pNext = pNext; pNext->m_pP..

C++ 2024.12.10

[강의] 12월 6일 수업정리

오늘은 연결 리스트 이중포인터에 대한 수업을 들었다. 1. 이중 포인터를 이용하여 PushBack 구현// game.h#pragma once#include class C_GAME{private: struct S_NODE { int nData; S_NODE* pNext; };private: S_NODE* createNode(int nData);private: S_NODE* m_pBegin; S_NODE** m_ppEnd;public: C_GAME(); void pushBack(int nData); void print();};// game.cpp#include "game.h"C_GAME::S_NODE* C_GAME::createNode(int nData){ S_NODE* pNode = new S_NODE..

C++ 2024.12.06

[강의] 12월 5일 수업정리

링크드 리스트의 삭제에 대한 부분의 수업을 들었다.[ 주의 사항, 실제로 이런식으로 사용은 하지는 않는다. 그저 공부하는 형식으로 만들어져있다. ][ 어제 만든 코드에서 추가로 진행하므로 추가되는 코드만 적어놓을 예정 ] 1. 중복된 데이터 삭제 void C_LINKEDLIST::remove(int nData){ S_NODE* pNode = m_pBegin; S_NODE* pUP{}; while (pNode) { S_NODE* pNext = pNode->pNext; if (pNode->nData == nData) { S_NODE* pDel = pNode; pUP->pNext = pNext; ..

C++ 2024.12.06