곰.. 님이 쓰신 글 :
: 질문:
:
: 통계학에 의하면 수의 집합에서 모드(mode)란 가장 빈도가 높은 수를 말한는데여..
:
: 예를들어,1,2,3,4,6,7,4,5,4,3 의 리스트에서 4가 3번 있으므로 모드는 4가 되는거자나여..
:
: 그럼 20개의 수를 입력받아 모드를 구하여 출력하는 프로그램을 알려주세여...
:
: 또한, 가장 빈도가 낮은 수를 출력하는 방법두여...
:
: 꼭좀 알려주세여...
:
: 배열과 문자열을 이용해서여...감사합니다.(--)(__)(--)(__).
배열과 문자열을 쓰지 않고, STL의 연관 컨테이너인 map과 multimap을 사용한 코드입니다.
//---------------------------------------------------------------------------
#include <iostream>
#pragma hdrstop
#include <map>
//---------------------------------------------------------------------------
using namespace std;
int main()
{
const int num_input = 11;
map<int, int> freq;
int input;
for (int i = 0; i < num_input; ++i) {
cin >> input;
freq[input]++;
}
multimap<int, int> inverse_freq;
for (map<int, int>::iterator i = freq.begin(); i!= freq.end(); ++i)
inverse_freq.insert(make_pair(i->second, i->first));
cout << "Most freqent values(mode, 최빈값[最頻數]): ";
int max_freq = inverse_freq.rbegin()->first;
for (multimap<int, int>::reverse_iterator i = inverse_freq.rbegin();
i->first == max_freq; ++i)
cout << i->second << " ";
cout << endl;
cout << "Most infreqent values: ";
int min_freq = inverse_freq.begin()->first;
for (multimap<int, int>::iterator i = inverse_freq.begin();
i->first == min_freq; ++i)
cout << i->second << " ";
cout << endl;
return 0;
}
//---------------------------------------------------------------------------
|