개인공부(212)
-
class(3)
오늘은 간다한 클래스를 만들었다. private 에는 년, 월 ,일을 정의하여 외부에서 접근이 불가능하게 설정했다. 클래스 호출함수로는 날짜 출력, 몇일이 지난지 대입받고 날짜를 계산했다. 계산함수는 private칸에 있어서 외부에서 접근이 불가능하게 설정했다. 그후에는 연산자 오버로딩을 통해서 + 연산자를 만들었다. 만약에 리턴값을 자기자신으로 하면 계속해서 연산이 가능하다.
2022.12.07 -
class(2)
이번에는 가변배열을 클래스로 구현해 보았다. 먼저 헤더파일에 클래스를 선언하였다. 그 이후에는 가변배열과 동일하게 구조를 설정하였다. 하지만 int* arr =new int[length]; 이여야 하지만 int* arr =new int(length) 로 잘못 적어나서 계속해서 오류가 발생했었다. int(length) 가 붙는것이 문법 오류가 되지않아서 찾는데 오랜시간이 걸렸다. 그 이후에는 배열이 의도대로 생성되지 않아서 힙버퍼가 발생해서 문제가 발생하였다. 다음부터는 조심해서 코드를 작성하자! 그리고 new[] 는 메모르해제할때 delete[] 를 사용해야한다.
2022.12.06 -
class (1)
class 선언방법 struct 구조와 유사하다. 접근 제한 지정자 private : 사적이다라는 개념으로 class 내부에서 접근이 가능하다. protect : 상속 개념을 배우고 다시 한번 정리예정이다. public : 누구에게나 공개되어서 어디서나 접근이 가능하다. m_i 는 private 이기때문에 class 외부에서 호출할 수 없다. SetInt 는 public 이므로 class 외부에서 호출할 수 있다. 위와같이 public 함수를 통해서 class 내부의 private m_i값을 수정할 수 있다. 생성자, 소멸자 객체 생성, 소멸 시 자동으로 호출 직접 만들지 않으면 기본 생성자, 기본 소멸자가 만들어짐 생성자 선언, 소멸자 선언 생성자를 선언할때는 class 의 이름을 그대로 선언해주면 된..
2022.12.06 -
노드
노드 가변배열 강의를 듣고 다음으로는 노드 구조를 구현하였다. 리스트.h 헤더파일에 노드와 리스트 구조체를 설계하였다. 메모리 공간을 만들어줄 릴리즈 함수와 메모리 공간을 해제할 exit 함수는 리스트의 시작주소만 알면 되기 때문에 list* 값만 받았다. 이 노드의 구조는 list 구조체의 count 를 통해서 길이를 확인 가능하고 이후에 노드들은 다음 노드들의 주소와 저장 int값을 가지고 있다. 이를 통해서 첫번째 시작주소만 알고 있으면 마지막 노드까지 찾아갈 수 있다. 다음으로는 릴리즈 함수를 구현하였다 시작은 아무런 값을 가지지 않기 때문에 firstNode 에 nullptr을 가지고 count도 0이다. 다음으로 새로운 값을 가지는 노드를 만들고 현재 마지막 위치에있는 노드의 NextNode값..
2022.12.06 -
병합 , 퀵 정렬
병합 정렬 병합 정렬을 c++로 구현해보았다. 처음에 어떤알고리즘인지만 보고 구현하는 과정에서 새로운 배열을 생성하고 배열의 값이 null인 것도 계산하는 코드로 작성해서 코드가 너무 길고 가독성이 떨어지고 코드를 완성할 수 없을거 같아서 다른 블로그의 c++로 병합정렬을 구현한 것을 공부하고 이해한후에 코드를 작성하였다 다른코드를 확인하니 재귀함수를 이용하였는데 정말로 생각지도 못한 방법이였다. 내가 재귀 함수를 정확하게 사용해본적이 없었는데 병합정렬코드로 재귀함수에 대해서 공부할 수 있었다. 그후에는 내가 만든 가변배열에서 활용할 수 있도록 가변배열의 크기와 같은 배열을 만들고 둘의 주소를 보내고 가장 왼쪽과 오른쪽 지점을 보내서 병합배열을 구현하였다. 퀵 절렬 이후에는 퀵정렬도 만들어보았는데 코드 ..
2022.12.04 -
정렬 알고리즘
정렬 알고리즘 c++ 강의에서 배운 가변정렬값을 버블정렬 함수를 구현해서 정렬하는것이 과제였다. 먼저 배열에 랜덤한 값들을 대입해서 정렬되지 않은 배열을 생성하였다. 사용법으로는 먼저 srand(time(NULL)) 을 이용하여 초기화 시켜준다 이 과정이 없으면 항상 같은 배열 값을 가진다. 그후에는 rand() 을 이용하면 0~19까지 값을 랜덤하게 정해주고 1을 더해주어 범위는 1~20으로 설정하였다. 버블 정렬 버블 정렬은 기본적으로 배열의 두 수를 선택한 뒤, 만약 그 두 수가 정렬되었다면 놔두고 아니라면 두 수를 바꾸는 방식으로 진행된다. 오름차순으로 정렬할 때는 , 내림차순이라면 여야 정렬된 것으로 판단한다. 이를 배열의 처음부터 끝까지 반복한다. 위 알고리즘을 배열에 아무 변화가 없을 때까지..
2022.12.03