명품 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 <class T> T bigger(T a, T b) { // 두 개의 매개 변수를 비교하여 큰 값을 리턴 if (a > b) return a; else return b; } int main() { int a = 20, b = 50, c; c = bigger(a, b); cout « “20과 50중 큰 값은 " « c « endl; Circle waffle(10), pizza(20), y; y = bigger(waffle, pizza); cout « “waffle과 pizza 중 큰 것의 반지름은 " « y.getRadius() « endl; } 실행 결과 : ...

March 9, 2020 · 2 min · Sobamemil

명품 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 37 38 39 40 41 #include using namespace std; template <class T> T* remove(T src[], int sizeSrc, T minus[], int sizeMinus, int & retsize){ int j; T* tmpArray = new T[sizeSrc]; for(int i=0; i<sizeSrc; i++){ for(j=0; j<sizeMinus; j++){ if(src[i] == minus[j]){ // src의 원소와 minus의 원소가 같으면 j의 값을 하나 내린 후 break –j; break; } } if(j==sizeMinus){ // j==sizeMinus 라는건 src와 minus에 같은 원소가 없어 중간에 break 되지 않은 경우 tmpArray[retsize] = src[i]; // src[i]를 동적 할당 하여 생성한 tmpArray에 삽입 retsize++; // return 할 size의 값을 하나 올려줌 } } return tmpArray; } int main() { int a[] = { 1,2,3,4,5,6,7,8,9,10 }; int b[] = { 5,6,7,8,9 }; int size=0; int *p = remove(a, 10, b,5, size); for (int i = 0; i < size; ++i) cout « p[i] « ’ ‘; cout « endl; delete[] p; size = 0; char c[] = { ‘a’,‘b’,‘i’,’m’,‘c’,’d’,’e’,}; char d[] = { ‘k’,‘i’,’m’,’n’,‘u’ }; char *q = remove(c, 7, d, 5,size); for (int i = 0; i < size; ++i) cout « q[i] « ’ ‘; cout « endl; delete[] q; } 설명 : ...

March 9, 2020 · 2 min · Sobamemil

명품 C++ programming 실습 문제 10장 4번

문제 : 배열에서 원소를 검색하는 search() 함수를 템플릿으로 작성하라. search()의 첫 번째 매개 변수는 검색하고자 하는 원소 값이고, 두 번째 매개 변수는 배열이며, 세 번째 매개 변수는 배열의 개수이다. search() 함수가 검색에 성공하면 true를, 아니면 false를 리턴한다. search()의 호출 사례는 다음과 같다. 1 2 3 int x[] = {1, 10, 100, 5, 4}; if(search(100, x, 5)) cout « “100이 배열 x에 포함되어 있다”; // 이 cout 실행 else cout « “100이 배열 x에 포함되어 있지 않다”; 실행 결과 : ...

March 9, 2020 · 2 min · Sobamemil

명품 C++ programming 실습 문제 10장 3번

문제 : 배열의 원소를 반대 순서로 뒤집는 reverseArray() 함수를 템플릿으로 작성하라. reverseArray()의 첫 번째 매개 변수는 배열에 대한 포인터이며 두 번째 매개 변수는 배열의 개수이다. reverseArray()의 호출 사례는 다음과 같다. 1 2 3 4 int x[] = { 1, 10, 100, 5, 4}; reverseArray(x, 5); for(int i=0; i<5; i++) cout « x[i] « ’ ‘; // 4 5 100 10 1이 출력된다. 실행 결과 : 목적 및 힌트 : ...

March 9, 2020 · 2 min · Sobamemil