언어/C&C++ 응용 20

[C] 정렬: qsort()

C에서 기본 제공하는 정렬함수: qsort() - quick sort를 기반으로 함 - stdlib.h 헤더 include 해야 함 - 레퍼런스: https://en.cppreference.com/w/c/algorithm/qsort qsort, qsort_s - cppreference.com void qsort( void *ptr, size_t count, size_t size, int (*comp)(const void *, const void *) ); (1) errno_t qsort_s( void *ptr, rsize_t count, rsize_t size, int (*comp)(const void *, const void *, void *), en.cppreference.com void qsort(..

언어/C&C++ 응용 2021.09.07

[C++] std::sort()

algorithm 헤더에 있는 sort() 함수는 quick sort를 기반으로 평균 시간복잡도 nlogn 을 보장한다. 1. 기본형: template void sort (RandomAccessIterator first, RandomAccessIterator last); 마지막에 사용자가 지정한 비교함수를 argument로 주지 않으면 기본 오름차순으로 정렬된다. vector v = {3, 4, 2, 1}; bool compare(int a, int b){ return a>b; } int main(void){ sort(v.begin(), v.end()); sort(v.begin(), v.end(), less()); sort(v.begin(), v.end(), greater(); sort(v.begin()..

언어/C&C++ 응용 2021.09.06

[C] 특수 입력

연속된 숫자 받기 0000010010 0010010101 0011110100 이렇게 생긴 입력을 받을 땐, 단순히 이중 for 루프에 "%d"로 받을 수 없다. 이걸 하나하나 쪼개서 받고 싶으면 1. 포맷 이용 scanf("%1d", &a[i][j]); 이렇게 받던가 int M; int ma[101][101]; scanf("%d", &M); for (int i = 0; i < M; i++) { for (int j = 0; j < M; j++) { scanf("%1d", &ma[i][j]); } } 아니면 2. string으로 받아야 한다. char arr[100][101]; for(int i = 0; i

언어/C&C++ 응용 2021.08.24

[C] Visual Studio 간단 디버깅

switch 문 a엔 정수상수, 변수식 가능 case에는 상수식, 상수 가능 (변수, 변수식 불가능) for문 for(초기화식; 조건식; 후처리식){ } 초기화식은 for문 도입부에서 한번만 실행된다는 점 주의! Visual Studio 디버깅 라인 바이 라인으로 코드를 확인하기 위해, 라인 바이 라인 디버깅 가능 F10 을 누르면 되고, F10을 누를 때마다 다음 실행 줄로 넘어가며, Shfit + F5를 누르면 디버깅 중단된다. breakpoint 특정한 부분으로 바로 가기 위해서는 breakpoint를 설정해서 F5를 눌러 실행하면 된다. breakpoint는 해당 부분에 오른쪽 마우스 클릭, 중단점 설정 을 누르면 된다. Watch window (조사식) 보통 아래 창에 떠있다. 조사식에서 원하는..

언어/C&C++ 응용 2021.08.05

[C] 난수 발생

int rand(void) 는 C에서 기본적으로 제공되는 난수발생 함수이다. 0부터 RAND_MAX 까지의 수 중에 난수가 발생한다. 이 함수는 seed를 이용해서 난수를 발생시키는데, 처음에 srand 함수로 특정한 값으로 초기화 된다. 일정 범위 내의 난수를 발생시키기 위해서는 modulo 연산을 주로 사용한다. v1 = rand() * 100 // 0~99 까지의 난수 발생 v2 = rand() %100 + 1; // 1~100까지의 난수 발생 v3 = rand() % 30 + 1985 : 1985 ~2014 까지의 난수 발생 하지만 modulo 연산을 통해 특정 범위의 난수를 발생시키면 완전히 분산된 난수를 발생시키지는 못한다. c++ 사용 설명서에 나오는 예시를 보면 /* rand example..

언어/C&C++ 응용 2021.08.03

[C] LNK1168 에러

프로젝트를 빌드 후 실행을 시키려고 하는데 LNK1168: 프로젝트명.exe을(를) 쓰기용으로 열 수 없습니다. 라는 에러가 떴다. 이 에러는 이미 이 exe 파일이 실행되고 있으면 발생하거나, 백신 프로그램이 실행을 막았거나, 디렉토리 권한의 문제일 수 있는데, 1. 백신 프로그램을 끈다. -> 안됨. 근데 백신 프로그램이 내 프로젝트 실행을 막을 수 있으므로 꺼놓기 추천 2. 디렉토리 권한 변경 속성 > 읽기전용에 V 자로 체크되어 있으면 해제 -> 역시 되지 않음 3. 이미 실행중 작업 관리자에 보면 백그라운드 프로세스에 콘솔창이 떠있는게 있을 수도 있고, 사용자로 들어가서 돌고 있는 프로세스 중에 있을 수도 있고 세부 정보에 떠있을수도 있다. 그래도 못찾겠다면 cmd로 들어가서 tasklist 라..

언어/C&C++ 응용 2021.08.03