|
차미령 님이 쓰신 글 :
: 사용자로부터 10개의 정수값을 입력받아서 다음의 값을 출력하는 프로그램을 작성하시오.
:
: 1.최대값 2. 최소값 3.평균 4.평균보다 큰수의 개수 5. 평균보다 작은수의 개수
:
: 이 다섯개를 구하는건데...제발줌 구해주세영~~ 기다리구 있을께영..."^^"부탁..
: 최대한 빨리했음 좋겠네영...
그럼 저는 STL의 알고리듬을 써서
for, while, do 등의 루프나 if 문 조차도 전혀 쓰지 않고 구현하는 경우를 써보죠.
//---------------------------------------------------------------------------
#pragma hdrstop
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
#include <numeric>
//---------------------------------------------------------------------------
using namespace std;
template <typename T>
class Cin {
T i;
public:
Cin() : i() {}
T operator() () { cin >> i; return i; }
};
#pragma argsused
int main(int argc, char* argv[])
{
vector<int> vec_int(10);
// cin으로부터 입력 받아 vec_int를 채움
generate(vec_int.begin(), vec_int.end(), Cin<int>());
// vec_int의 내용 출력
copy(vec_int.begin(), vec_int.end(), ostream_iterator<int>(cout, " "));
vector<int>::iterator p_max = max_element(vec_int.begin(), vec_int.end());
cout << "\nMax element = " << *p_max << endl;
vector<int>::iterator p_min = min_element(vec_int.begin(), vec_int.end());
cout << "Min element = " << *p_min << endl;
float avg = (float)accumulate(vec_int.begin(), vec_int.end(), 0) / (float)vec_int.size();
cout << "Average = " << avg << endl;
int num_gt_avg = count_if(vec_int.begin(), vec_int.end(), bind2nd(greater<float>(), avg));
cout << "The number greater than the average = " << num_gt_avg << endl;
int num_lt_avg = count_if(vec_int.begin(), vec_int.end(), bind2nd(less<float>(), avg));
cout << "The number less than the average = " << num_lt_avg << endl;
return 0;
}
|