1. Info ¶
{{|작성� : 2005 08 01
ìˆ˜ì •íšŒìˆ˜ : 0회
구현특ì�´ì‚¬í•
ìˆ˜ì •íšŒìˆ˜ : 0회
구현특ì�´ì‚¬í•
map�용
미구현부분ì´�ì � sort|}}
2. Input Text ¶
~cpp ê¹€ì² ìˆ˜ 59 98 75 91 마ë�™íƒ� 66 78 77 84 ë°•ë¯¼ì² 52 50 63 72 ì‹ ìˆœì�´ 97 55 52 97 송ì˜�ì�´ 78 82 63 73 양민수 72 66 73 52 장준구 95 62 94 53 최호민 78 53 74 75 태ì„�호 66 82 82 94 한노ë�¼ 86 65 62 68
3. Code ¶
~cpp
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>
#include <map>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
vector<string> tokenize(const string& line);
bool save_map(vector<string>&, map< string, vector<int> >&);
double total(const vector<int>&);
bool print_report(ostream&,
const map< string, vector<int> >,
double accu(const vector<int>&) = total);
int main(int argc, char *argv[]) {
string line;
vector<string> token;
map< string, vector<int> > grades;
ifstream fin("input.txt");
while(getline(fin, line)) {
token = tokenize(line);
save_map(token, grades);
}
print_report(cout, grades);
system("PAUSE");
return EXIT_SUCCESS;
}
vector<string> tokenize(const string& line) {
string word;
vector<string> ret;
int beg=0;
int quantity=0;
for(int i=0; i != line.size(); i++) {
if (line[i] == ' ') {
ret.push_back(line.substr(beg, quantity));
beg=i+1;
quantity=0;
} else ++quantity;
}
return ret;
}
bool save_map(vector<string>& input, map< string, vector<int> >& grades) {
for (int i = 1; i != input.size(); i++) {
grades[input[0]].push_back(atoi(input[i].c_str()));
}
return true;
}
double total(const vector<int>& grades) {
return accumulate(grades.begin(), grades.end(), 0.0);
}
bool print_report(ostream& os,
const map< string, vector<int> > record,
double accu(const vector<int>&)) {
for(map< string, vector<int> >::const_iterator iter = record.begin();
iter != record.end();
iter++) {
os<<iter->first<<'\t';
for(vector<int>::const_iterator grades = (iter->second).begin();
grades != (iter->second).end();
++grades)
cout<<*grades<<'\t';
cout<<accu(iter->second)<<'\t';
cout<<accu(iter->second)/(iter->second.size())<<'\t';
cout<<endl;
}
return true;
}
5. Idle Talk ¶
�.. -_-;; map � ��야한다는 강박관�때문� 쓰기는 했는�.. -_-;; spec� sort가있었다.
아무래� 다시 짜는게 � 나� 것 같다.
ì§œê³ ì„œ ëŠ�낀건;;
아무래ë�„ 다시 짜는게 ë�” 나ì�„ 것 같다.ì§œê³ ì„œ ëŠ�낀건;;
- sorting ì�´ 안ë�˜ëŠ” 것ì�´ map ì�˜ 단ì �ì�´ë‹¤. ã…¡,.ã…¡; 그야ë§�로 ê²€ìƒ‰í• ë•Œë§Œ 좋ì�€ 것 같다.
- 다른 컨테ì�´ë„ˆì™€ 기본ì �ì�¸ DSì�˜ 골격가 다르기 때문ì—� ì¹˜í™˜ì •ë�„로는 DSì�˜ 변경ì�´ 안ë�œë‹¤.











