본문 바로가기

2016/11

CHAPTER04 - 클래스의 완성-2 1. 이니셜라이저를 통한 참조자인 멤버변수 초기화 const 변수와 마찬가지로 '참조자'도 선언과 동시에 초기화가 이루어져야 합니다. 따라서 아래와 같이 이니셜라이저를 통해 초기화가 가능합니다. class Second { private: int # public: Second( int &n) : num(n) {} }; 2. 디폴트 생성자(Default Constructor) 객체가 되기 위해서는 반드시 하나의 생성자가 호출되어야 한다. 그리고 이러한 기준에 예외를 두지 않기 위해 생성자를 정의하지 않는 클래스에는 C++ 컴파일러에 의해서 디폴트 생성자라는 것이 자동으로 삽입된다. 즉, 생성자를 선언하지 않으면 다음과 같은 정의와 완전히 동의하다. class Second { private: int &.. 더보기
CHAPTER04 - 클래스의 완성-1 1. 정보은닉(Informaiton Hiding)의 이해 멤버범수를 'private'으로 선언하고, 해당 변수에 접근하는 함수를 별도로 정의해서 안전한 형태로 멤버변수의 접근을 유도하는 것이다. 이는 좋은 클래스가 되기 위한 기본조건이 된다. (1) 엑세스 함수(Access Function) 외부에서 'private'으로 선언된 멤버변수에 접근하기 위한 목적으로 정의되는 함수들이다. 보통 정수형 데이터 XXX 변수에 대해서 아래와 같이 선언한다. int getXXX( void) const; void setXXX( const int); (2) 상수형 함수(Const) 위의 액세스 함수들에 'const' 선언이 추가되어 있다. 이는 "이 함수 내에서 멤버변수의 값을 변경하지 않겠다"라는 의미이다. 따라서 c.. 더보기
CHAPTER03 - 클래스의 기본 1. C++에서의 구조체 구조체는 연관 있는 데이터를 묶을 수 있는 문법적 장치이다. (1) C++에서의 구조체 선언 C에서는 구조체를 나타내는 'struct'를 명시해 주어야 한다. 이것을 생략하려면 'typedef' 선언을 추가해야 한다. 그러나 C++에서는 별도의 선언없이도 구조체 변수를 선언할 수 있다. (2) 구조체 안에 함수 선언 C++에서는 구조체 안에 함수를 선언할 수 있다. 만약 그렇게 되면, 구조체의 멤버 변수를 별다른 연산 없이 참조할 수 있게 된다. struct Stu { int stu_num; char stu_name[10]; void print_information( void) { cout 더보기
다항식 - 4 1. 교대식의 인수분해 (1) 교대식의 성질 다항식에 포함된 임의의 두 문자를 서로 바꿔 쓸 때, 식의 형태는 같지만, 그 식 전체의 부호는 반대가 되는 식. ※ f(x, y, z) = -f(y, x, z) = -f(x, z, y) = -f(z, y, x) - f(x , y, z)는 x-y, y-z, x-z를 인수로 갖는다. (2) 대칭식의 성질 다항식에 포함된 임의의 두 문자를 서로 바꿔 쓰더라도 의미가 변하지 않는 식. 특히, 차수가 모두 같은 항으로 이루어진 대칭식을 동차대칭식이라고 한다. ※ f(x, y, z) = f(y, x, z) = f(x, z, y) = f(z, y, x) - 1차 동차대칭식 : k(x + y + z) - 2차 동차대칭식 : k(x² + y² + z²) + l(xy + yz.. 더보기
CHAPTER02 - C언어 기반의 C++ CHAPTER 02의 시작에 앞서 - 상수(const)의 의미 => const int num = 10; // 변수 num을 상수화 => const int *ptr1 = &val1; // 포인터 ptr을 통해 val1의 값을 변경할 수 없으나, 다른 변수의 주소 저장 가능 => int const *ptr1 = &val1; // 포인터 변수 ptr을 상수화 => const int const *ptr1 = &val1; // 위의 두 가지 특성을 다 가진다. 1. 새로운 자료형 bool C언어에서는 별도로 매크로 상수로 지정해 주지만, C++에서는 'true'와 'false'가 존재한다. 위의 데이터를 저장하기 위한 자료형을 'bool' 이라고 한다. int, double과 같은 기본자료형의 하나이기 때문에 다.. 더보기
CHAPTER01 - C언어 기반의 C++ C++은 C언어를 포함한다. 때문에 C로 작성된 대부분의 프로그램은 C++ 컴파일러로도 컴파일이 가능하다. 그러나 C++은 C언어가 지니지 않는 문법적 특성도 제법 지니고 있다. 1. 헤더파일 선언문 #include C언어와 똑같이 헤더파일의 확장자는 .h이지만 C++에서는 표준 헤더파일의 선언에는 확장자를 생략하기로 약속되어 있다. 2. 입력과 출력 C언어에서는 서식문자를 통해 별도의 출력 및 입력 포맷을 지정해줘야 하지만 C++에서는 데이터의 타입에 따라 적절하게 동작하므로 더 편리하다. ( 문자열의 경우도 똑같다. ) 3. C++의 지역변수 선언 C의 경우 무조건 함수의 가장 처음 부분에 정의되어 있어야 하지만, C++의 경우 지역변수 선언은 함수 내 어디든지 가능하다. 4. 함수 오버로딩(Func.. 더보기
다항식 - 3 인수분해 1. 인수분해의 기본 공식 다항식이 둘 이상의 수, 단항식, 다항식의 곱으로 표현될 때, 이러한 수, 단항식, 다항식을 그 다항식의 인수(factor)라 한다. 이와 같이 하나의 다항식을 몇 개의 인수의 곱으로 표현하는 것을 그 다항식의 인수분해(factorization)라 한다. - 전개와 인수분해는 서로 역과정 (1) 수행과정 - 공통인수가 있다면 공통인수로 먼저 묶는다. - 전체 또는 부분으로 묶어서 인수분해의 공식을 이용한다. 2. 치환을 이용한 인수분해 (1) 반복되는 부분을 한 문자로 치환해서 푼다. (2) 짝수 차수의 항만 이루어진 다항식, 즉 복이차식이면 x² = X로 치환한다. 이때 치환을 해도 인수분해가 안되면, A² - B² 꼴로 변형가능한지 살펴본다. 3. 내림차순으로 정리.. 더보기
C언어 막대 자르기(Rod cutting in C) - 동적 프로그래밍(Dynamic-Programming) C언어 막대 자르기(Rod cutting in C) - 동적 프로그래밍(Dynamic-Programming) - 어떤 막대(rod)를 그들의 최종 값을 최대화하는 방식으로 작은 길이의 막대로 자르는 것 - 막대의 어느 부분을 자를 것인지 선택하는 간단한 문제 - 막대의 길이 n(inches)와 가격 p를 고려하여 자른 부위를 팔았을 때 얻을 수 있는 최고의 수익 r을 결정하는 것 - 만약 자른 길이의 가격이 충분히 크다면, 최적의 솔루션은 자르는 것을 전혀 요구하지 않는다. - 막대의 길이가 n이면 총 2ⁿ-¹의 다른 방식으로 자를 수 있다. ( 자르지 않는 경우의 수도 포함 ) the strategy of the rod-cutting, cite : introduction to algoritms 3/E .. 더보기
C언어 문제 - 홀수 또는 짝수의 합 차 구하기 (questions in C) C언어 문제 - 홀수 또는 짝수의 합 차 구하기 (questions in C) - 입력 받은 수가 홀수이면 더하고, 짝수이면 빼라. ( 0을 입력 받으면 종료하고, 최종 수를 출력하라. ) #include int main (void) { int n; int sum = 0; while( 1 ) { scanf("%d", &n); if( n == 0) { break; } if( n % 2 == 1) { sum = sum + n; } else { sum = sum - n; } } printf("%d\n", sum); } 더보기
C언어 문제 - 입력 받은 수의 합 구하기 (questions in C) C언어 문제 - 입력 받은 수의 합 구하기 (questions in C) - 양수 또는 음수를 입력 받아, 입력 받은 모든 수를 누적하라. ( 단 0 입력 시 종료하고, 최종 수를 출력하라. ) int main (void) { int n; int sum = 0; while( 1 ) { scanf("%d", &n); if( n == 0 ) { break; } sum = sum + n; } printf("%d\n", sum); } 더보기