12주차 퀴즈

문제1

주어진 자료형 배열에서
최대/최소값을 출력하는 템플릿 함수 MAX와 MIN을 작성하세요(2점).

#include <iostream>
using namespace std;

// insert your code here

int main(){
    char buf[] = "partytime";

    cout << MAX<char>(buf, 9) << endl;
    cout << MIN<char>(buf, 9) << endl;
}

문제2

문자열(“hello world”)의 길이(11)가 출력되도록
다음 프로그램을 수정하세요(2점).

#include <iostream>
#include <cstring>
using namespace std;

template <typename T>
int LENGTH(T object){
    return sizeof(object);
}

// insert your code here

int main(){
    char buf[] = "hello world";
    cout << LENGTH(buf) << endl;

    char *buf2 = buf;
    cout << LENGTH(buf2) << endl;

    string buf3 = "hello world";
    cout << LENGTH(buf3) << endl;
}

문제3

주어진 자료형의 배열을 다루는 Array 클래스를 완성하세요(4점).

#include <iostream>
using namespace std;

template <typename T>
class Array {
    // insert your code here
};

int main(){
    Array<int> a;
    a.push(10); a.push(20); a.push(30);

    cout << a.pop();    // 30
    cout << a.pop();    // 20
    cout << a.pop();    // 10
}

문제4

다음 프로그램의 출력에 대해서 설명하세요(2점).

#include <iostream>
using namespace std;

template <typename T, const T* LIST, int SIZE, T(*FUNC)(T)>
struct Composed {
    T sum() {
        T result = 0;
        for (int i = 0; i < SIZE; ++i) {
            result += FUNC(LIST[i]);
        }
        return result;
    }
};

int numbers[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int square(int i) { return i * i; }

int main()
{
    Composed<int, numbers, 10, square> c;
    cout << c.sum() << endl;
}

댓글남기기