일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- C
- 테트리스
- 알고리즘
- 삽입
- 포인터
- 정렬
- string
- 구조체
- 커서
- 콘솔
- 선택
- Time
- 난수
- 오목#함수#gotoxy#금수#알고리즘#2차원#배열#실무#프로젝트
- 이진탐색#binary_search
- 구현
- 문자열
- scanf
- 공백
- 배열
- 파일입출력
- Windows API
- 셀
- 3차원 배열
- 함수
- 버블
- crud
- 연결리스트
- C언어
- Today
- Total
목록전체 글 (14)
C언어 알고리즘 정리 및 실무 프로젝트
완전탐색 알고리즘 중에 하나인 순열 알고리즘입니다. C언어에서 재귀함수를 이용하여 구현했습니다. perm 함수 매개변수 설명 - char arr[] : 데이터를 담은 배열 - int depth: 교환작업이 일어나는 곳의 깊이 ( ex: A B C의 경우, A는 깊이 0, B는 깊이 1, C는 깊이 2 ) - int n: 배열 요소의 개수 swap 함수 매개변수 설명 - char[] arr: 데이터를 담은 배열 - int i: 배열 인덱스 i - int j: 배열 인덱스 j ****** 궁금하신 사항은 댓글에 적어주세요. ****** #include #include void perm(char[],int,int); // 깊이를 파고들면서 탐색 void swap(char[],int,int); // 위치를 바꿈..
기존의 소스에서 로딩 화면, UI, 다음에 나올 블록의 모양, 점수, 레벨(난이도), 최고 기록 기능을 새롭게 추가하였습니다. 함수 단위로 기능을 세분화하였습니다. 함수에 있는 주석을 보시면서 혹시라도 콘솔 테트리스로 프로젝트를 하시는 분을 위해 기능을 이해할 수 있도록 써봤습니다. #define _CRT_SECURE_NO_WARNINGS #include "hed.h" #define LEFT 75// 왼쪽 방향키 #define RIGHT 77// 오른쪽 방향키 #define UP 72// 위쪽 방향키 #define DOWN 80// 아래 방향키 #define ESC 27 #define BX 5// 외부 벽 X의 좌상단 좌표 #define BY 1// 외부 벽 Y의 좌상단 좌표 #define BW 10//..
데이터를 반으로 나눈 후, 중간 값을 이용해 특정 값을 탐색하는 알고리즘이다. 중간 값을 기준으로 작고 큶을 비교해야 하기 때문에 반드시 데이터가 정렬되어 있어야 한다. 추가 응용 방법(알고리즘을 공부하고 싶으신 분들은 다음 사례로 함수를 Customizing해보세요.) 1: 내림차순으로 정렬된 데이터에서도 값을 탐색하게 한다. 2: 특정 수가 아닌, boolean(탐색 여부) 또는 int(탐색하기 위해 반복된 횟수) 값을 리턴하게 한다. 3: 매개변수의 형태를 변경하여 이진 탐색을 구현 #include int binary_search(int[], int, int); // 매개변수: 탐색할 배열, 배열 요소의 개수, 찾으려는 수 // 리턴 값: 해당 수의 위치(인덱스) int main() { int a[..
초보자분들이 이해하시기에는 어려운 정렬 방법입니다. 이 블로그에 있는 (선택, 삽입, 버블, 셀 정렬)을 먼저 이해하신 뒤에 보시는 것을 추천드립니다. 장점: 다른 정렬방법보다 수행 속도가 빠르고 효율적이다. 단점: 퀵 정렬과 다르게 에 구현되어 있지 않아서 직접 코드를 짜야 하는 불편함이 있다. 사용 방법: merge_sort(원본 배열, 정렬되어 저장될 배열, 첫 번째 인덱스, 마지막 인덱스) void merge(int a[], int b[], int left, int right) {// 병합 (분할된 세트를 정렬하면서 합침.) int l = left;// 왼쪽 집합의 시작점 int mid = (left + right) / 2;// 왼쪽 집합의 마지막 지점 int j = mid + 1;// 오른쪽 집..
가독성을 높이기 위해서 전체적으로 줄바꿈을 많이 한 점, 양해 부탁드립니다. 학생을 추가, 삭제, 검색하기 위한 연결리스트(포인터), 1 ~ 6까지의 기능을 하는 각각의 함수 구현, 학생의 정보를 하나로 묶어서 다루기 위해 구조체를 사용했습니다. *중요: 프로젝트에서 헤더 파일 폴더에, student.h를 넣어주셔야 오류가 뜨지 않습니다. #include "student.h" int main() { char key;// case 분기를 위한 변수 x = 3, y = VIEW;// 메뉴 출력시 "▶"가 있을 위치 설정 Cursor(false, 1);// 콘솔 커서 숨기기 menu_display();// 메뉴 화면 출력 make_student();// 학생 추가 load();// 저장했던 파일 불러오기 wh..
------------------- Visual Studio x86 (32비트 프로그램) 기준입니다. -------------------- 기존 소스에 (1P, 2P) 조작, 게임방법, 무승부, 상대 전적, 오목판 확장, 흑돌의 금수 알고리즘 등을 추가했습니다. 함수와 상수의 선언은 "omk.h" 헤더파일에 포함되어 있습니다. 소스가 길다보니 visual studio에 복붙하셔서 크게 보시는게 좋을 듯 싶습니다. 금수 알고리즘의 일부분을 구현하였습니다. 나머지는 이후에 더 확장시키도록 하겠습니다. #include "omok.h" int main(void) { int end = 1;// 차례 시작 int j, k;// for문 반복 변수 char key;// 게임 종료후 계속 진행할 여부 start();/..