반응형

전체 글 2934

16진수와 2진수 사이의 변환

아무런 의미가 없을 수 있는 코드일 수 있지만 한 번쯤 두뇌를 회전시키는 연습을 하기에는 적당한 것 같다. #include #include #include void PrintHexDigit(unsigned sum);//16진수 숫자 문자로 출력 void ConvertBinToHexInt(char *nums,unsigned u);//2진수를 16진수로 변환(정수부) void ConvertBinToHexFlo(char *under,unsigned u);//2진수를 16진수로 변환(실수부) void ConvertBinToHex(char *nums);//2진수를 16진수로 변환하여 출력 unsigned HexToDecimal(char hexdigit);//16진수 문자를 10진수로 변환 void ConvertH..

파서트리

파서 트리 파싱을 목적으로 하는 트리 파싱 원본을 목적에 맞게 변환하는 작업 A포맷으로 되어 있는 원본을 B포맷으로 변환하는 작업 예) 수식 파서 트리(피 연산자는 음이 아닌 정수, 연산자는 사칙연산에 한한다고 하자.) 먼저 중위 표기에 해당하는 정규식을 만들어보자. Numeric Expression!: 0 mid -expression!: operator: ||| operand: * number_char:||...| 위 첨자가 작성이 안되어서 다음과 같이 약속한다. 참고 * : a가 1번 이상 반복된다. 0 : a가 0번 이상 반복된다. 수식 파서 트리를 만들기 위해서 1. 원본을 입력받는다. 2. 토큰을 생성한다.(Lexical) :잘못된 토큰이 있으면 멈춤다. ==> 원본에 모든 요소가 operand..

new 연산자 오버로딩

new 는 오버로딩 가능합니다. 이에 대한 얘기를 하기 전에 먼저 특정 문법이 맞는지 틀린지에 대한 논쟁에 대해 어떻게 확인을 할 수 있을까를 느낄 수 있는 간단한 대화부터 소개합니다. 질문: "Who is a winner?" 답변: "I think that the Code is a winner!" MS초청 세미나 중에서 MS의 개발 이사의 답변... class hoo { public: hoo(void); ~hoo(void); void *operator new(size_t size) { return (void *)0x1000; } }; hoo::hoo(void) { } hoo::~hoo(void) { } int main() { hoo *h = new hoo(); return 0; } 그럼 어떨 때 쓸까?..

퀵소트

퀵 소트 알고리즘 간략한 퀵소트 알고리즘 pivot을 선택하여 pivot보다 작은 것을 오른쪽으로 큰 것을 왼쪽으로 보낸뒤 pivot의 자신의 자리로 들어간 뒤에 앞쪽 배열과 뒤쪽 배열을 재귀적으로 퀵소트를 호출하는 방법을 사용한다. 퀵 소트 알고리즘의 pseudo-code(의사코드)의 예 1. pivot을 선택한다. (다양한 방법이 있고 이에 따라 성능이 많은 차이를 지니게 된다.) 2. pivot을 배열의 맨 앞(혹은 맨 끝)의 요소와 교체한다. 3. i = 1로 설정,j=asize-1 로 설정 4. Loop i가 j보다 작을 동안 4.1 Loop pivot(배열의 맨 앞의 요소) >= 배열의 i번째 요소 4.1.1 i를 증가 4.2 Loop pivot(배열의 맨 앞의 요소)

선택정렬

선택정렬 해결할 문제 – n개의 요소로 구성된 배열 A를 정렬하자 §초기: A – Loop A의 카운터 i에 0을 대입 §Loop A( i O(N*N) 예: Array: 27 8 12 15 23 9 6 25 17 1: 6 8 12 15 23 9 27 25 17 2: 6 8 12 15 23 9 27 25 17 2-a: 6 8 12 15 23 9 27 25 17 i j min 2-b: 6 8 12 15 23 9 27 25 17 i j min 2-c: 6 8 12 15 23 9 27 25 17 i j min 2-d: 6 8 12 15 23 9 27 25 17 i j min 2-e: 6 8 12 15 23 9 27 25 17 i j min 2-f: 6 8 12 15 23 9 27 25 17 i j min 3: ..

삽입정렬

삽입정렬 해결할 문제 – n개의 요소로 구성된 배열 A를 정렬하자 §초기_A – Loop A의 카운터 i에 1을 대입 §Loop _A( i temp and j> 0) //Loop invariant: temp’s position is at A[0]-A[j] § swap A[j],A[j-1] § j assign j-1 § A[j] assign temp i assign i+1 수행속도 i번째 요소를 자기 위치에 보내기 - LoopB의 수행속도 :T'(n) T('n) 은 최악의 경우 n-1번 비교한다. 삽입 정렬 - T(n) T(n) = T'(1) + T'(2) + ... + T'(n) = 0 + 1 + ... + (n-1) 즉 O(N*N)이다. 하지만 배열에 데이터를 순차적 보관을 하면서 보관하는 기능을 수행..

24. 배열의 사용

배열의 사용(정적) 다루는 내용 - 배열과 포인터 - 포인터와 관련된 연산 - 배열의 사용 C언어에서 배열명은 원소 타입의 포인터 상수 취급을 받는다고 앞선 항목에서 얘기를 하였다. 이러한 이유로 배열과 포인터는 따로 떼어내서 설명을 하는 것보다 같이 하는 것이 이해하기 쉬울 수 있다. 그리고 포인터와 관련된 연산(산술 연산 중에 가감 연산, 간접 연산, 인덱스 연산, 주소 연산)의 동작 원리를 명확하게 이해를 하고 있어야 능숙하게 배열을 사용할 수가 있다. 먼저 목적에 따라 배열을 선언하는 예를 살펴보자. 50명의 국어 성적 int kor_scores[50]; 50명의 국어,영어,수학 성적 int scores[50][3]; 50명의 국어 성적의 위치 정보 int *rkor_scores[50]; 50명의..

23.배열

배열 다루는 내용 - 배열의 선언 및 초기화 - 배열의 기본적인 사용 배열은 같은 형태의 데이터(레코드)를 연속적인 메모리(논리적인 메모리)에 할당하여 관리하는 자료구조를 말한다. C언어에는 정적인 배열 형식의 변수를 선언할 수 있는 매커니즘을 제공하고 있다. 반면, 동적인 배열은 동적 메모리 할당에 관련된 함수 호출을 통해 사용할 수 있지만 형식으로는 제공하고 있지 않다. 정적 배열과 동적 배열 배열은 자료를 보관하는 컨테이너이다. 배열은 데이터를 보관하는 버퍼가 연속적인 메모리에 할당되어 하나의 관리명으로 관리할 수 있는데 해당 버퍼의 크기(즉, 보관할 수 있는 원소의 개수)가 컴파일 시에 정해지는가 혹은 런타임에 정해지는가에 따라 정적 배열과 동적 배열로 나눌 수 있다. 배열의 선언 및 초기화 배열..

22. 제어문 - 반복문

제어문 - 반복문 다루는 내용 - while, do while - for 반복문의 경우는 특정 조건이 참일 동안 반복해서 수행하는 구문을 얘기를 한다. 이를 위해서는 반복할 수행구문 외에도 초기 설정, 반복을 할 조건, 반복할 조건에 대한 변화등에 대해 고려를 해야만 한다. 이러한 반복문을 구성하는 요소들은 목적에 따라 생략될 수도 있고 실제 논리 전개 과정에서 순서가 다를 수도 있다. 이를 위해 C언어에서는 반복문으로써 while문, do while문, for문을 제공하고 있으며, 반복문 내부에서 수행할 구문에서 반복문의 조건으로 분기하거나 반복문을 탈출할 수 있게 하기 위해 continu와 break라는 부가적인 문법도 제공하고 있다. 먼저, for문에 대해 살펴보기로 하자. 포맷: for(초기화 구..

21.제어문 - 선택문

제어문 - 선택문 다루는 내용 - 선택문 조건문의 경우는 특정 조건이 참이냐 거짓이냐에 따라 수행할 구문이 결정이 된다. 선택문의 경우는 연산결과가 특정 상수에 따라 수행할 위치가 결정이 되는 구문이다. 다음은 선택문의 포맷이다. 포맷: switch (연산결과가 상수가 되는 표현) { case 상수A: statement; //선택된 값이 A일 경우에 여기서 부터수행하라. [break;] //switch블록을 빠져나가라.(필수 사항이 아님) case 상수B: statement; //선택된 값이 B일 경우에 여기서부터 수행하라. [break;] //switch블록을 빠져나가라.(필수 사항이 아님) ...중략... default: statement; //나열되지 않은 경우에 수행하라. } if문에서는 영향 받..

반응형