본문 바로가기

C++ programming

(122)
명품 C++ programming 실습 문제 10장 12번 문제 : Open Challenge를 수정하여 사용자가 어휘를 삽입할 수 있도록 기능을 추가하라. 실행 결과는 다음과 같다. 실행 결과 : 목적 및 힌트 : vector 컨테이너의 종합 응용 연습 랜덤 정수를 방생시키기 위해 다음 두 라인의 코드가 필요하며, 과 를 include 해야 합니다. 1 2 srand((unsigned)time(0)); // 시작할 때마다, 다른 랜덤수를 발생시키기 위한 seed 설정 int n = rand(); // 0에서 RAND_MAX(32767) 사이의 랜덤한 정수가 n에 발생 코드 : 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 32 33 34 35 36 37 38..
명품 C++ programming 실습 문제 10장 11번 문제 : 책의 년도, 책이름, 저자 이름을 담은 Book 클래스를 만들고, vector v;로 생성한 벡터를 이용하여 책을 입고하고, 저자와 년도로 검색하는 프로그램을 작성하라. 실행 결과 : 목적 및 힌트 : vector에 객체의 삽입, 검색 응용 연습 코드 : 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 #include #include #include using namespace std; class Book{ int year; ..
명품 C++ programming 실습 문제 10장 10번 문제 : 나라의 수도 맞추기 게임에 vector를 활용해보자. 나라 이름(nation)과 수도(capital) 문자열로 구성된 Nation 클래스를 만들고, vector v;로 생성한 벡터를 이용하여 나라 이름과 수도 이름을 삽입할 수도 있고 랜덤하게 퀴즈를 볼 수도 있다. 프로그램 내에서 벡터에 Nation 객체를 여러 개 미리 삽입하여 퀴즈를 보도록 하라. 실행 화면은 다음과 같으며, 저자는 9개 나라의 이름과 수도를 미리 프로그램에서 삽입하였다. 문자열은 string 클래스를 이용하라. 실행 결과 : 목적 및 힌트 : vector에 객체의 삽입, 검색 응용 연습 코드 : 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 ..
명품 C++ programming 실습 문제 10장 9번 문제 : STL의 vector 클래스를 이용하는 간단한 프로그램을 작성해보자. vector 객체를 생성하고, 키보드로부터 정수를 입력받을 때마다 정수를 벡터에 삽입하고 지금까지 입력된 수와 평균을 출력한느 프로그램을 작성하라. 0을 입력하면 프로그램이 종료된다. 실행 결과 : 목적 및 힌트 : vector 컨테이너 활용 연습 정수만 다루는 벡터이므로 vector v;를 이용하면 된다. iterator를 사용할 필요는 없다. 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include #include using namespace std; int main() { vector v; double sum=0; while(true){ int tmp; cout ..
명품 C++ programming 실습 문제 10장 8번 문제 : 문제 7을 푸는 다른 방법을 소개한다. bigger() 함수의 다음 라인에서 > 연산자 때문에 1 if(a > b) return a; T에 Circle과 같은 클래스 타입이 대입되면, 구체화가 실패하여 컴파일 오류가 발생한다. 이 문제를 해결하기 위해 다음과 같은 추상 클래스 Comparable을 제안한다. 1 2 3 4 5 6 class Comparable { public: virtual bool operator > (Comparable& op2) = 0; // 순수 가상 함수 virtual bool operator 명품 C++ programming 실습 문제 10장 7번 문제 : 다음 프로그램은 컴파일 오류가 발생한다. 소스의 어디에서 왜 컴파일 오류가 발생하는가? 1 2 3 4 5 6 7 ..
명품 C++ programming 실습 문제 10장 7번 문제 : 다음 프로그램은 컴파일 오류가 발생한다. 소스의 어디에서 왜 컴파일 오류가 발생하는가? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; class Circle { int radius; public: Circle(int radius = 1) { this->radius = radius; } int getRadius() { return radius; } }; template T bigger(T a, T b) { // 두 개의 매개 변수를 비교하여 큰 값을 리턴 if (a > b) return a; else return b; } int main() { int a = 20, b = 50,..
명품 C++ programming 실습 문제 10장 6번 문제 : 다음 함수는 매개 변수로 주어진 int 배열 src에서 배열 minus에 들어있는 같은 정수를 모두 삭제한 새로운 int 배열을 동적으로 할당받아 리턴한다. retSize는 remove() 함수의 실행 결과를 리턴하는 배열의 크기를 전달받는다. 1 int * remove(int src[], int sizeSrc, int minus[], int sizeMinus, int& resSize); 템플릿을 이용하여 remove를 일반화하라. 실행 결과 : 목적 및 힌트 : 함수의 일반화에 대한 이해, 템플릿 함수 만들기 코드 : 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 32 33 34 35 36 ..
명품 C++ programming 실습 문제 10장 5번 문제 : 다음 함수는 매개 변수로 주어진 두 개의 int 배열을 연결한 새로운 int 배열을 동적 할당받아 리턴한다. 1 int * concat(int a[], int sizea, int b[], int sizeb); concat가 int 배열뿐 아니라 다른 타입의 배열도 처리할 수 있도록 일반화하라. 실행 결과 : 목적 및 힌트 : 함수의 힐반화에 대한 이해, 템플릿 함수 만들기 코드 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; template T* concat(T a[], int sizea, T b[], int sizeb){ T *rArray = new T[sizea + siz..