Advertisement
TwITe

Untitled

Aug 18th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. template <class T>
  2.     ostream& operator<<(ostream& os, const set<T>& p) {
  3.         for (typename set<T>::const_iterator it = p.begin(); it != p.end();) {
  4.             os << *it;
  5.             if (++it != p.end()) {
  6.                 os << ", ";
  7.             }
  8.         }
  9.         return os;
  10.     }
  11.  
  12. void eng_dict_create(map <string, set <string> >& eng_dict, map <string, string> latin_dict) {
  13.     vector <char> translate_word;
  14.     for (auto translate : latin_dict) {
  15.         for (int i = 0; i < translate.second.size(); i++) {
  16.             if (isalpha(translate.second[i])) {
  17.                 translate_word.push_back(translate.second[i]);
  18.             }
  19.             if (translate.second[i] == ',' || i == translate.second.size() - 1) {
  20.                 string unknown_word(translate_word.begin(), translate_word.end());
  21.                 string translation(translate.first.begin(), translate.first.end());
  22.                 eng_dict[unknown_word].insert(translation);
  23.                 translate_word.clear();
  24.             }
  25.         }
  26.     }
  27. }
  28.  
  29. void task8() {
  30.     map <string, string> latin_dict;
  31.     int n, count = 0;
  32.     cin >> n;
  33.     for (int i = 0; i < n; i++) {
  34.         string key, value;
  35.         cin >> key;
  36.         getline(cin, value);
  37.         latin_dict[key] = value;
  38.     }
  39.     map <string, set <string> > eng_dict;
  40.     eng_dict_create(eng_dict, latin_dict);
  41.     cout << eng_dict.size() << endl;
  42.     for (auto it : eng_dict) {
  43.         cout << it.first << " - " << it.second << endl;
  44.     }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement