zepirox님이 쓰신 대로
이 사이트는 숙제를 대신 해주는 곳이 아닙니다.
숙제를 스스로 해보고 도저히 자기 힘으로 풀 수 없을 때
자신이 만든 소스를 올려서 어디가 잘못되어 있는지 물어보세요.
ANSI C++ STL의 강력한 기능을 홍보하기 위해서
특별히 한 문제만 풀어드립니다.
학생 님이 쓰신 글 :
: 5. 다음 배열을 만들고 물음에 답하시오.
:
: 배열 : 6 2 9 4 10 1 7 8 3 5
:
:
: 1) 정렬(sort)을 사용하여 큰 수부터 순서대로 출력하시오(15점).
: ex) 10 9 8 7 6 5 4 3 2 1
:
: 2) 짝수와 홀수를 각각 정렬(sort)하여 큰 수부터 출력하시오(20점).
: ex) 10 8 6 4 2 9 7 5 3 1
STL의 sort와 stable_partion 알고리듬을 사용하여,
for, while 등의 루프나 if 문조차도 전혀 쓰지 않고 작성하는 예제입니다.
//---------------------------------------------------------------------------
#include <iostream>
#pragma hdrstop
#include <algorithm>
#include <iterator>
//---------------------------------------------------------------------------
using namespace std;
#pragma argsused
int main(int argc, char* argv[])
{
int a[10] = {6, 2, 9, 4, 10, 1, 7, 8, 3, 5};
sort(&a[0], &a[10], greater<int>()); // 오름차순 정렬은 greater 함수 객체를 사용하세요.
copy(&a[0], &a[10], ostream_iterator<int>(cout, " "));
cout << endl;
stable_partition(&a[0], &a[10], // stable_partion은 순서를 유지하는 파티션 알고리듬
compose1(bind2nd(equal_to<int>(), 0), // compose1(f, g)는 f(g(x))를 의미합니다.
bind2nd(modulus<int>(), 2)));
// compose1은 SGI STL 배포본인 STLport에 있는 비표준 함수 객체입니다.
// C++Builder 6가 아닌 경우는
http://stlport.org 에서 받아서 별도로 설치하셔야 합니다.
copy(&a[0], &a[10], ostream_iterator<int>(cout, " "));
cout << endl;
return 0;
}
//---------------------------------------------------------------------------